<!DOCTYPE html>
<html lang="ch">
<head>
    <meta charset="UTF-8">
<meta name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">

    <meta name="author" content="Vico">





<title>JAVA常见数据结构 | Vico的个人博客</title>



    <link rel="icon" href="/favicon.ico">




    <!-- stylesheets list from _config.yml -->
    
    <link rel="stylesheet" href="/css/style.css">
    



    <!-- scripts list from _config.yml -->
    
    <script src="/js/script.js"></script>
    
    <script src="/js/tocbot.min.js"></script>
    



    
    
        
    


<meta name="generator" content="Hexo 4.2.0"></head>
<body>
    <div class="wrapper">
        <header>
    <nav class="navbar">
        <div class="container">
            <div class="navbar-header header-logo"><a href="/">首页</a></div>
            <div class="menu navbar-right">
                
                    <a class="menu-item" href="/archives">时间轴</a>
                
                    <a class="menu-item" href="/category">分类</a>
                
                    <a class="menu-item" href="/tag">标签</a>
                
                    <a class="menu-item" href="/about">关于</a>
                
                <input id="switch_default" type="checkbox" class="switch_default">
                <label for="switch_default" class="toggleBtn"></label>
            </div>
        </div>
    </nav>

    
    <nav class="navbar-mobile" id="nav-mobile">
        <div class="container">
            <div class="navbar-header">
                <div>
                    <a href="/">首页</a><a id="mobile-toggle-theme">·&nbsp;Light</a>
                </div>
                <div class="menu-toggle" onclick="mobileBtn()">&#9776; Menu</div>
            </div>
            <div class="menu" id="mobile-menu">
                
                    <a class="menu-item" href="/archives">时间轴</a>
                
                    <a class="menu-item" href="/category">分类</a>
                
                    <a class="menu-item" href="/tag">标签</a>
                
                    <a class="menu-item" href="/about">关于</a>
                
            </div>
        </div>
    </nav>

</header>
<script>
    var mobileBtn = function f() {
        var toggleMenu = document.getElementsByClassName("menu-toggle")[0];
        var mobileMenu = document.getElementById("mobile-menu");
        if(toggleMenu.classList.contains("active")){
           toggleMenu.classList.remove("active")
            mobileMenu.classList.remove("active")
        }else{
            toggleMenu.classList.add("active")
            mobileMenu.classList.add("active")
        }
    }
</script>
        <div class="main">
            <div class="container">
    
    
        <div class="post-toc">
    <div class="tocbot-list">
    </div>
    <div class="tocbot-list-menu">
        <a class="tocbot-toc-expand" onclick="expand_toc()">展开全部</a>
        <a onclick="go_top()">回到顶部</a>
        <a onclick="go_bottom()">去底部</a>
    </div>
</div>

<script>
    document.ready(
        function () {
            tocbot.init({
                tocSelector: '.tocbot-list',
                contentSelector: '.post-content',
                headingSelector: 'h1, h2, h3, h4, h5',
                collapseDepth: 1,
                orderedList: false,
                scrollSmooth: true,
            })
        }
    )

    function expand_toc() {
        var b = document.querySelector(".tocbot-toc-expand");
        tocbot.init({
            tocSelector: '.tocbot-list',
            contentSelector: '.post-content',
            headingSelector: 'h1, h2, h3, h4, h5',
            collapseDepth: 6,
            orderedList: false,
            scrollSmooth: true,
        });
        b.setAttribute("onclick", "collapse_toc()");
        b.innerHTML = "全部收缩"
    }

    function collapse_toc() {
        var b = document.querySelector(".tocbot-toc-expand");
        tocbot.init({
            tocSelector: '.tocbot-list',
            contentSelector: '.post-content',
            headingSelector: 'h1, h2, h3, h4, h5',
            collapseDepth: 1,
            orderedList: false,
            scrollSmooth: true,
        });
        b.setAttribute("onclick", "expand_toc()");
        b.innerHTML = "展开全部"
    }

    function go_top() {
        window.scrollTo(0, 0);
    }

    function go_bottom() {
        window.scrollTo(0, document.body.scrollHeight);
    }

</script>
    

    
    <article class="post-wrap">
        <header class="post-header">
            <h1 class="post-title">JAVA常见数据结构</h1>
            
                <div class="post-meta">
                    
                        作者: <a itemprop="author" rel="author" href="/">Vico</a>
                    

                    
                        <span class="post-time">
                        日期: <a href="#">April 12, 2020&nbsp;&nbsp;0:30:51</a>
                        </span>
                    
                    
                        <span class="post-category">
                    分类:
                            
                                <a href="/categories/%E6%89%8B%E8%AE%B0/">手记</a>
                            
                        </span>
                    
                </div>
            
        </header>

        <div class="post-content">
            <h2 id="1-什么是数据结构？"><a href="#1-什么是数据结构？" class="headerlink" title="1.什么是数据结构？"></a><em>1.什么是数据结构？</em></h2><p>在讲线性结构、链表、集合等之前，我们必须先要弄什么是数据结构，数据结构就是一种计算机存储的方式，比如说磁盘，磁盘是用链式存储的，这样可以节省内存空间。可以看到两两数据之间是存在关系的，他们可以通过这些关系来提高资源和存储效率。</p>
<blockquote>
<p>数据存储在计算机中，可以按照两种方式去存储，如下图：</p>
<p>①从数学抽象逻辑结构上区分，为逻辑结构</p>
<p>②从物理计算机结构上区分，为存储结构</p>
</blockquote>
<p><img src="%0A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%0Ay+vK5AifrjBHohPCZyTKbNskCZ+2UdIQAggEVYDwGdTKRXfchM/o1t6umRM+%0A7ZKkHcIn50AmAoTPTLTYFwEEQilA+AxlWUM9KcJnqMvryuQIn64wR6ITwmck%0AymzbJAmftlHSEAIIBFWA8BnUykV33ITP6NberpkTPu2SpB3Cp33nQEFBgWRl%0AZRU2+OefO6Rs2WzRNM2+TjxuifDpcQHoHgEEvBcgfHpfA0aQmQDhMzOv/Px8%0AKVOmTOFB27dvl3LlyolpimRl7f6mzjTNf/x5Om8AVahTbxb9vhE+/V6h4IyP%0A8GlPrdav/1FuvfUumTx5bGGDvXtfL9df31fuuWemXH11Z6lT52h7OvOwFcKn%0Ah/h0jQAC/hAgfPqjDowifQHCZ/pWa9d+Jbfddo9Mnz6h8KCrrhooI0cOkltv%0AvVMGD75mtzd0S5e+LYnEShk0qJds3PizbNiwUerWPVZatuwmDz88VfbZp0Jh%0AO9u2bZfvv1+/22B69Lhut77UL6tVqyoVKpRPf9Au7En4TB/5nXeWybp1Xxce%0AULNmddl3333k008/362Rxo0bypFH1pS33/5AXnnljcLfXXNNN6lS5RB5//2E%0AvP76OzJ0aN/djlu06AX5738/2WNAPXp0kt9++12OOeZIef75V+WHHzbIlVde%0Alv7AXdqT8GkPdCp83nPPmMKVThU+b7ihv2Rnl5FXX31TOnVqY09nHrZC+PQQ%0An64RQMAfAoRPf9SBUaQvQPhM32r48NvknHPOkHPP/ddu4XPMmGGiLnFTb+gu%0Au6xl4aVuKnwuW7ZCevfuKi+++Jr8/PNmueqqy4sMn+pN1Lx5T+w2mBdeWCIX%0AXHDubj+7/PLWUqvW4ekP2oU9CZ/pI3/yyWpRwUBtX331jai6N2t2jtx33xzp%0A3Lmt9fNnn31JWrZsLqefforMmTPf+pDi/PObSL9+w2TWrElSrlxZefbZl+Xz%0Az9fJtdf22K3zLVt+ka1b/5Du3QfK9OkTpUyZnZddVq58sLRr10OefHK2PPfc%0Ay1b47N798vQH7tKehM/SQ0+ePEtWrvzI+pCjfv260rFja/n00zXyyCNPWh9e%0AlS1b1rp64+abh8hBBx1Y+g49bIHw6SE+XSOAgD8ECJ/+qAOjSF+A8JmelXqT%0AM3r0BJk58y65+eYJcs45/7JWn15+eam12lm+fDnZb7/9ZMCAHnLIIQfLjTeO%0Ak3/961R54413rctxNS1L1q37Sg48sKIYxkqpX/9EawVC1+tJ167trUGoFSsV%0AKFLb3XdPl/79/xcu1KpVvXonpDdgF/cifKaPvXz5h9ab/xNPPM4KkNu2bd60%0ASB8AACAASURBVJNWrS6W7t0HyOzZk6yGVHC8666b5YAD9rfCZ+XKleTII4+Q%0AF154TQYP7m3t88ADj0peXr71YcbfN3UO9es3XHr16mL9qlatmtZ506pVN8Jn%0AEaXSdX28iAxWf9c6dw7+aqCa4pQps+Wll5bKE0/Msl5vNm/eIk8++Zz1YcWJ%0AJx6f/gnr8z0Jnz4vEMNDAAHnBQifzhvTg70ChM/0PAcNGiUHHVRR1Pc41U08%0AunZtJ+oGHnfeOU0GDrxajj661m4NqTf/LVteaF12q1aZ1CrEgw9Oti6xLOqy%0AW3XwRx99KmvXflnYzsSJ91mX7Ka2o46qZYUWv22Ez/Qrot4sX3fdKJk16y6Z%0ANu1Ba2VbBcMrrxwgU6feLsqyd++hMnfuZKvRVPjMzV1hXSapPoBQ2/jx98qm%0ATVvkttuG79H5nDmPWSuqxx1XW1av/kL23199KNJzt/D5/fcbigyu6c/EmT1Z%0A+Sy9q1r57tixl/Va1bx508I6jxp1h/VBmVr1XLVqtdSufZSoKymCvBE+g1w9%0Axo4AArYIED5tYaQRFwUIn+lhP/HEc9aOs2Y9bIXIQw+tbF1qO2TIzXL88XVE%0A3YhozZq11qWSLVpcIH363CCtW19khU/1ZxUIbrllqNVGUeEzmfyvFVJ33caP%0AnyJDhlyz288OO+xQicXqpTdol/YifGYGrb6X+dprb8nvv2+1Amf58uWty26P%0AOuoIK1Cqm1ilVsNT4XPu3MetlVEVJNU2ePBoeffdXFmy5Anr+NT2448/SZcu%0Afa0VL/VBx1133S8nn3yidbk4K59F1ylsK5+PPPKUbNnyq3z88afWOVCnzlHy%0A8stvWK8v6kOys846zXrNUt8/V1diBHkjfAa5eowdAQRsESB82sJIIy4KED7T%0Ax1bflfv22x+kZ8/Ocsstd8qbb74rIpoce+zR1iW2KjyoN3Tq8tvFi1+V/fff%0At/CGQ2rlM3WjoJ49B8vdd99q/VldWrnffvtal+9+/vnOVc/ff//dusSyQYOT%0ArCCy62VyxxxTy/r+n582wmfm1VAfWqhzYsGCGdbB33zznYwde7ds2rRZ7r9/%0AglSseID181T4zM7Oti7JVjccUlunTtdIpUoHyaWXNtvtO8hqhV6tnqsPKNQN%0AsC677GortKrv9hE+wx8+1QdiXbv2E/U9dLU63rdvd+v15YAD9pM333xPvv76%0AO7n88lZy/fW3Wq9BQbib9t7+dhE+M3/t4QgEEAiZAOEzZAWNwHQIn+kVWa0o%0ADRp0kxU833/fsN70q1UEtYqlVqs6dPi3qFA5efKYwtWEXe92O3PmPGv1QW3q%0ARjOHH17dunxXHffvf19YOAh1U6KBA2+03jSqS2xVSFFvEtVlko8++tRul+Gm%0AN3Ln9yJ8Zm6sQuWsWY/I00/PkYMPrmQ1oO6crL6fOWLEgMIGU+FTXT7Zvn1P%0AmT9/uhVUb7xxvHUuqJtU7XrprfoQ47zzzpJ58x6XhQsXS82aNUTd8VRthM/w%0Ah091qa26m3HDhg32eNSKupv2yJHjrNXQv39okfkZ7I8jCJ/+qAOjQAABDwUI%0Anx7i03WJBAif6bGpR6ysWPGRnHJKzPrn1FPjolaj1Jsf9d3MAw88wLqzZJs2%0AlxQ2uGv43LWXoi67VQHu6adfkJkzH5aLLjpf+vTZucL19NMvinrEi7rEUj2j%0AT92gyG8b4TOziqhHnnTrdq2cd96Z1qWQN944yFqRUj+rVu1Q6462qRWpVPhU%0A54Ra7bz//jtk5sxHpHr1w6zLuq+4or+MHj1Ejjiixm6DKCgwpVu3/tZ3PdVl%0At4TPf65R2C67VTMt6jmf6kOy1q2vtD7sUq8vTzzxrLRufXFmJ6/P9iZ8+qwg%0ADAcBBNwXIHy6b06PpRMgfKbnp97Mq7vWqu2PP7aJaRbIvvvua33X84ILLpPT%0ATotbIWDq1Aekd+8rrP0yCZ/qhjPquY41alSz+kl950/1qy6dVHepVIHXjxvh%0AM7Oq3H77ZDn77MaSk9NAOnS42rqzbf/+I6RXr67Whwzqcuzrrtt5V1sVPtUd%0Acd96633r3FA3t1KB87HHpkvFivvL4sVLZMGCp61La9VKempTNzNSwXbUqMGF%0AP1OXio8cOZBHrfytXGEPn+rxO3PnLpAlS/7z1wcRmvV82L59h8nMmXdmdvL6%0AbG/Cp88KwnAQQMB9AcKn++b0WDoBwmd6fp999oW8884H8s47udZjC2655Xpr%0ARVKtVKrv56lVT3VjoenTH5KxY4dlHD5VoFXPc3zmmZdEXeJ70knHWcFCXZZ7%0AwAEHyG233W09+1HdOMZvG+Ez/Yo8+uhCa1Uq9XxOFQzU82Pj8fpyxRUd5M8/%0A/5SuXftLjx6XS5Mmp1vh85BDKkmTJo2tcKkuze3Ro5P1u9Sm7p5bt+5x0q1b%0AB+tuuffeO0s++eQzmTJlXJHf6VM3pNn5LNCO6Q/cpT2526090LuufI4cebt1%0ACb96/ShXrpz1GqWuqFCX9jdrdrY9HXrUCuHTI3i6tV8gJycnlp+ff4ymaVVF%0ApJqIHF9QUHDv8uXLl9rfGy2GScDt8Knr+v+pe0+ISG1N0w4Nk2XY5mKapnqA%0A42dZWVnjc3Nzv/DL/Aif6VVCPTdPPaD91FNzpHr1qtZjMtTK0lVXdbJ+PmbM%0AXdbq1O23jyi8G21q5VNdXqlWnYra1OWVjz56f+Gv1LNE1eW9KlyooKneNGqa%0AZq2wTp8+T3777TfrRjJ+2gif6Vdj9uxHrUempC6rzc1dLs8++4qMHv2/FUr1%0AnU51p2P1Xc1dL7udMWOedYOq9u1b7NahCrDXX3+L3HffeCtYbN/+p7WK+veb%0Ayajvg77wwhJZseJjmTBhlC8v4SZ8pn8u7W3PvLw82bDhJ+u1qqht1ys57OnR%0Am1YIn96406vNArqu3yoig0Skwq5NFxQUnE34tBk7hM25GT5jsdjdmqb1CyFj%0A2KdUICJdDMOY54eJEj7tq4J6w6e+B5ra1OqSCgKVKh2Ydidbt261Luf9p+3v%0AfaTdsIM7Ej5Lh1tUEEj9bOPGnyU7u4x1t1r1AYR6RmNRm7rRjPqQIvXvovZR%0Aq6rq+6bq7qe7Pp6ldKO392jCp72eYW+N8Bn2CkdgfrqufywiJ/w11dEisllE%0Atqh/FxQUbCJ8RuAkKOUU3QqfsVjsXE3TXlXDVXffbNgwJlWrVi7l6DncKQH1%0ARvLrr7+1Vh3UnQjVDU9/+eWXY9esWbPdqT7TbZfwma4U+/2TAOGTc8MuAcKn%0AXZLRaIfwGY06h3aWuq6rd4TnikiuaZpdksmkCqJsCGQk4GL4nKFpWverrrpc%0Arr66S0ZjZGdvBXr2vE5yc1eoQbQzDGOBt6MRIXx6XYHg90/4DH4N/TIDwqdf%0AKhGMcRA+g1EnRlmEQCwW66Rp2lwRedIwjNZOIcXj8cqmaar759f+67ukTnUV%0ApnY/F5FPDMP435eifDw7t8JnPB5/3TTNJlOnjpNGjXQfizC0vwtMmjRdHnro%0A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%0ANm26y+23j5CBA2+SqVPHWW/y1a3M27ZVdwCsITt2qFXPMdbvDjmkkkyb9qAV%0ABh59dKE88cRMUc9QUiunf9+6dbvMuuxXrbJ26HC1FYTHjRspW7b8IscdV1um%0ATJktEyaMsg5Td0JUQTQWC1f4/OuW/leIiLo5QhUR+Vr9t2EYrzn9F8Yv4VN9%0AINK2bQ+5//47rHNw1/C5aNGD8t57Cdm+/U856yy1ILxzU+FTfdihbmevzmd1%0ALteqVaPI8OnXy8BLU1/CZ2n0OBYBBBBAAAH3BQif7puHtscghc9UERYuXGzd%0AXfakk06wbgKkgmCDBidZvzaMldYq6KRJ6n4dIsOGjbXuRrhy5cdSv35d6d37%0ACitYbt68xfpOpmpHrWzOmze1sMZqlVGFA7XqWdw2ceJ9VrgoW7asrFjxoUyd%0AOt5a2alT5yjre6B9+14pt912tzRv3tTqv6SbVyuf8Xhc3Z+/smmaKlxWViFT%0A07SqpmmqyajQWf6vOT1bUFBw4/Lly61nhTm9+SV8Pv30i7Ju3dfSpUtbue++%0AB63vBH/44Sp54YUl1veC1YcS1asfVvhhiDof1Yr8r7/+Lg0anCizZz8itWrV%0AtC7hVueLWm1Xm/pw5IwzGvn2MvDS1JfwWRo9jkUAAQQQQMB9AcKn++ah7THI%0A4VNd6piTc7K8/fYyOeqoI6RRI106d+5jXe6oLrXddWvVqpt12W0qkLZq1bxw%0A5fP6628pDJ/qYeEzZsyTli2by1tvvW89I+2qqwbKvvv+7+ZB6juir7++UNTN%0Aj665Zqh07NhKVq1aIxdd1NR6NEKXLn1l9uy7rRsjDRx4dWF76plrJd28Cp8N%0AGjRokpWV9fpexu3KZbZ/798P4XPr1q3Svn1Pueii860PPVq0uMD63q9aee/R%0AY5A8++zud2JW+99yy13WCrv6cGP+/Ketlfjp0yfKTz/9vMfK559/7vDtZeAl%0APY/VcYTP0uhxLAIIIIAAAu4LED7dNw9tj0EOn+qyW7X9+eef0qfPDdbjU9T3%0ANlUISG1qZVM9kqVXryHWpa8nnHCsvPnmu9alu/vss4+YZoH1fc7Uymfnzn2l%0AQoVy1t10Tz01LvvsU8F68HPqElrVbirIfvrp5/LRR6ussJG6261aCVOPgzns%0AsEPlp582WWNZtWq1Na7UZcElOZl8HD5XisiLmqZNSiQS35dkbiU5xg/hUz3P%0AVX1QoW4spL5H/PDD91krnep8bNGiq7XKri4LV//07dtdypTJsu68rFY51Xc+%0AN2zYaD34XZ0jRYVPdcmtXy8DL0nNUscQPkujx7EIIIAAAgi4L0D4dN88tD0G%0AMXyqy2bVnW3btbtUcnOXy+OPP2vddGjw4N7SqFG8sFYqdF5xRT85/PDq8sUX%0AX8qwYdfKaafFZdy4e63VSrVKpS6ZVcFUPVpFPRd017uTqu9vqu90PvDAY0WG%0Az53Bd4f85z/vFYbPZPK/8vvvW62bC6k7nj788FPy1VffSP/+V1njKOnmVfhU%0Al93m5eUdqmlalezs7Crq8lvTNNWfjzNNU112W+GvOanHDfR0+kZDKT8/hM/U%0AWNT3NtWqt66fLO3b97A+zPjtt63SrNnZ1gq8WpU//vg6VsD89tvvZenSd6zw%0AqT7cSAVQ9RzZ0aMnFF4urm5gVbZsttWFHy8DL+l5rI7zW/jUdT1X3cOqoKDg%0A9OXLl+/5Be/STJZjEUAAAQQQCIEA4TMERfTLFIIWPhOJlTJu3GSpUKGC9fgU%0A9UZePUPzzDNPK3yznrJVK0epx1OkVisXL15irUweemhla4Vqx448WbfuK+nS%0Apb21Ovnee7nywQdJSSRWWMf26NFJHnxwvvTpc2VhyUaOHCfPPDO38M+7Puez%0AqLqqO+jOnHnXbs/9zLT+XoXPvY2zdu3a5StWrHiZiKh/zvtr39GGYey805KD%0Am1/Cp3qsjrrbbbNm58h///uJdOvWwVoJHz78Nut7m/vvv591g6H77htfqLHr%0A3W7VnZK//fYHycvLt1bj1WXbarvllqFy3HHHiF8vAy9Naf0UPk877bR9tm/f%0AvlXNR9O0ExKJxKrSzI1jEUAAAQQQCKMA4TOMVfVoTkEKnypMdunST8aNGyGV%0AKh1k3VF2xYqPpEyZMqIugVRbfn6BdVmjuruouuwxtaXCp7oZjNq/atUqUqnS%0AgVb47Natv3XZrbpEVz0WpWHDmPVd0ooVD7BWVFVAOO20hoVtqWeBvvLKgr2G%0ATxVs1XdJt2z51Vr9Ut/9LM3mx/C563xisdjdmqb1++tNfK1EIvFVaeZb3LF+%0ACZ/qO5/qMSrq5kKnnppT+F3jp556Xtav3yj/+c+7cuONg6yVz9S2a/hM/ayo%0Ay27V7/x6GXhx9dnb7/0UPmOx2Jmapr2hxpuXl1d15cqVG0ozN45FAAEEEEAg%0AjAKEzzBW1aM5BSl8KqI//thmfQ8z0019766o71yqQKsC5j99H1NdVqvulqvC%0AampTl+LuegmtuvGQCpvqES27buryy+zs7BKN9+/z83v4VOPVdf059axP0zQf%0ATSaTajXUsc0v4XPXy7RVgDz44ErWivlnn30hHTteLSNHDpJ4/GRZtixZ+F3k%0ATMKnXy8DL01hfRY+B2qaNlFEvqtYsWKtpUuX5pVmbhyLAAIIIIBAGAUIn2Gs%0AqkdzClr49IjJ824DEj5ri0hSRPYXkYud/P6nH8KnWinPzV0h6tJbdam2+o7m%0A5MljZcGCZ0TdeGq//faxVt/VCqimqRtV7bxBVrrhUwVPv14GXpq/EH4Jn7qu%0A/5+ILPrre8uuXC5eGjeORQABBBBAwCsBwqdX8iHsl/AZjKIGIXz+tfr5tog0%0A1jStfyKRuMcpXT+ET3VDKXWZ9mmn5Vh3R1aX3/bvP8K69Payy1pal39fe+1I%0A6wZU06dPKFwZT4VPdfMh9czaojb1vM/hw6/17WXgpamrH8KnruvqzmRqpf4w%0AteqpaVqOm3drLo0fxyKAAAIIIOC2AOHTbfEQ9xfG8Pnzz5utVafy5cuXqHJq%0ARUvdTTedbf36H6VKlUPS3j+dNovaJyjhMx6P32eapvqC6yTDMAaUdL7FHeeH%0A8FncGFO/VyFUXX6d2tT5qR7Psu+++6TbROF+frkMPOOB73KAl+Hz5JNPrpGd%0And3ZNM1OInKCiGzSNK1TIpF4vjRz4lgEEEAAAQTCLED4DHN1XZ5b2MKn+u5l%0A9+4D5f77J1jftVR3tq1T52g5/fRTrOd9zpw5r0hhdadb9agVtQ0aNEr69esu%0AtWodbv15+vSHrGeIqksn1fbbb7/LmDHDrP+eO3eBFSJat77Y0coFJXzGYrFO%0AmqapWwEvMgzj306hBCl8OmUQ1HbdDJ8nnnjiwdnZ2ZU1TauelZXVV0Ra7uK2%0AyjTNbslk8t2gWjJuBBBAAAEE3BAgfLqhHJE+whY+VdhUq0yXX97aqqC6GdCI%0AEbdZl0XWrXusqMeiNG7cUNau/dK6622NGtVkxYqPredyHn98bZk16xF57rlX%0ApHnz86wbx5x55qlW+LzjjpusR2iorW3bq2TBghnWf6tLL7t06SuzZ08q1aNU%0AijvdghI+GzRo0CQrK+t10zSXJpPJs4ubV0l/T/gsqZz3xzkdPtVrmohUUYFT%0ARCoVMWP1TNoZmqbdz6W23p8PjAABBBBAwP8ChE//1ygwIwxb+GzRoovMmXPP%0AbneeVTduWb9+g/z4408ybdpcqV37SOu/1aW16g616u616jt6ul5fXnzxNXnj%0AjXesZ4iq31WpUlkWL37VegajyM6/enl5O+SGG/oX1lg9d7R+/bpywQXnOlZ3%0AwufutIRPx041xxt2I3xqmtakiIl8KiJPi8hXhmFMcXyidIAAAggggEBIBAif%0AISmkH6YRpvCpLrm9oFf94gAAIABJREFU6KJO8vLL8/8KiXmyevVa67+rVTvU%0AWslctmy59WiV9983rMCZ2lTwPPjgg2Ty5FnWDWPuvXeWPPnkbHn++Vfl5ZeX%0A7lGqevVOkO7dO1o/f/zxZ2TDho1yzTXdHCsp4ZPw6djJ5XLDTofPeDyuHvdz%0AqPonKytL/Vs9J0n901REyvw13TdFZKBhGAmXp093CCCAAAIIBE6A8Bm4kvl3%0AwGEKn+rZihMmTJHp09Vj+0R++eVXGTXqDmvVUn0nUz3qQj3v8+qrB1s3CUo9%0A21NdTnvddb2tY9q06S633z5CBg68SaZOHSfZ2WVk7Ni7pW3bS6RmzRqyY4da%0A9Rxj/a5y5YOtYxKJFfLIIwtl4sRRjhWa8En4dOzkcrlhp8PnP00nHo/XE5Gu%0ApmlescvluD0Nw5juMgHdIYAAAgggECgBwmegyuXvwYYpfKrVzKeeel7GjRu5%0AG7p6nIW6g+1JJ50g/foNk27dLpMGDU6y9jGMldYq6KRJt1h/HjZsrGzatFlW%0ArvzYupRWPafx0UcXyubNW6zvdKp21B1u582bWtiHWkkdM2aS9b1PpzbCJ+HT%0AqXPL7Xa9Cp+pecZisVqapnUVEevTIk3TTk0kEu+77UB/CCCAAAIIBEWA8BmU%0ASgVgnGEKn99++4MMHjxaHnnkviLDp/qeZ07OyfL228vkqKOOkEaNdOncuY9M%0AnDjautR2161Vq27WZbepQNqqVfPClc/rr79lt/D5xhvvymuv/UdGjx7iWMUJ%0An4RPx04ulxv2OnymphuPx+8xTbOvpmnrDzjggMOXLl2a5zIF3SGAAAIIIBAI%0AAcJnIMoUjEGGKXyqGwudd15rWbLkCev7nakttfKpLrtVm/puaJ8+N1iPT1GP%0AWGnR4oLCfdXKpnokS69eQ6Rp07PkhBOOlTfffNe6dHefffYR0yyQX3/9bbfw%0AqR63kpeXL926dXCs6IRPwqdjJ5fLDfslfKppx+PxR0zT7GCa5sRkMnmdyxR0%0AhwACCCCAQCAECJ+BKFMwBhmm8KnE27fvKXfddbNUq1a1sADqsll1Z9t27S6V%0A3Nzl8vjjz1o3HRo8uLc0ahQv3E+Fziuu6CeHH15dvvjiSxk27Fo57bS4jBt3%0Ar3Ts2EqOPLKmbN/+pxVMx44dVvhcUPW90rPOaixnn326Y0UnfBI+HTu5XG7Y%0AT+Fzl+fSfmIYRl2XKegOAQQQQACBQAgQPgNRpmAMMmzhc/78p62VydSdaBOJ%0AlaIehVKhQgXr8SlLl74jF154rpx55mlStmz2bkUyTbNwxTR12e3ixUtEPTv0%0A0EMrWyumO3bkybp1X0mXLu2la9d21nNE1XM+H374PilXrqxjRSd8Ej4dO7lc%0AbthP4TMnJ+e4goKCVSKyo2LFivty6a3LJwPdIYAAAggEQoDwGYgyBWOQYQuf%0AKiB27dpP5syZbIXLLl36ybhxI6RSpYNkypTZsmLFR1KmTBnJz8+3CpSfXyB5%0AeXly1lmnWTcXSm2p8Pnhh6us/atWrSKVKh1ohc9u3foXXnarVlXV1qHDvx0t%0AOOGT8OnoCeZi434Kn2rasVjsB03Tqubn5x+3YsWKz1ykoCsEEEAAAQQCIUD4%0ADESZgjHIsIVPpa4ep6LC4gEH7C9//LFN9tmnQsbFUG2kHsWy68FqdVRdspv6%0A3ccffya1ax8p5cqVy7iPTA4gfBI+Mzlf/LyvD8Pn65qmNSkoKDh7+fLlez7U%0A18+YjA0BBBBAAAEXBAifLiBHpYswhs8w1o7wSfgMy3lN+AxLJZkHAggggEBU%0ABAifUam0C/MkfLqAbEMXhE/Cpw2nkS+aIHz6ogwMAgEEEEAAgbQFCJ9pU7Fj%0AcQKEz+KE/PF7wifh0x9nYulHQfjc01DX9XNM0xyqadqxIlKr9Mq04JSAaZrr%0A1bc7srKyZiQSiQed6qc07eq6frFpmgNFpLamaYeXpi2OdVzgO3U+maY5OZlM%0APuF4b3vpIB6Pn2Ga5jBN0443TfMoL8dC38UKbFDnjaZpDyQSiZnF7m3DDoRP%0AGxBpYqcA4TMYZwLhk/AZjDO1+FESPvc4l68zTfOO4uXYw4cC8wzD6OSnccVi%0Asds0TRvqpzExlvQENE2bnEgk+qW3t7176breR0Qm29sqrbkhYJrm48lksq3T%0A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%0ARqFw4fOOk88lS+Zg1aoQDh48hBtuqHGcfF5xRQXUrHkthgwZhUaN7kDp0iVO%0AKZ8SS4sWD2LEiH4oXbokunbtD1lVlXE3bNiMChXKqX6rVw+gXbtjZ+iklc+/%0A/vobtWrdjWbN7kLevHlSY6hb92YUK1Y0prMu3vIZDAYbWJZV33GcVpKoZVkz%0AQqFQu5gmzc5JgARIgARIwCcEKJ8+KaQOaVA+daiCf2Lwk3wuWfKG2rIq1+uv%0Av4c2bZqmyuctt1yPfPnyqs8uu+xSXHLJxXj11Tfx009b0Lp1Ezz99Bwlg19/%0AvR5vvPGeEkLZKlu8+Pmpq5b9+o1AwYIF8Pff/6JKlcswc+bzqRIrq5WVK1+m%0A+m/SpB6uvfZKiAzLS+379u2KYcPGoG/fLqJR+OOPv9C791BMnz5GtZcttiKk%0Assq5Y8cuJagXXlhKrXZ+9tlatG59d+qEe+mlJWjS5E4kJ1eK6ST0Uj4vvPDC%0As/Lnz18oR44cRRzHuQVAGwCXpiRoWdbIUCjUN6YJs3MSIAESIAES8BEByqeP%0AihnvVCif8a6Av8b3k3ymrUx622737duHpk074Pbb/wfb/hL169dRwnfOOfnR%0Avn1PLFs277hCS/thw8bhvPPOhax8vvTSq2q77TPPjMHu3XtOWvmU50ybNeuA%0Am266Fhs3blZiKgK8c+dv+PvvfzBhwgz073/s0NayZcuoceXq0WMgzjuvIAYM%0A6IHmzTth8OBe+PnnLbj11hvU56NGTcbNN1+PYPCKmE7EWMunzDuRSsuyzgdQ%0AAsCpHmxdBuAZ27Zfi2my7JwESIAESIAEfEZAe/m84oorzs2ZM2cd+R7kOM7J%0AD0b5rCAupHNIXlodiUTC69atW+NCf1F3QfmMGhUbRkHAT/L5zDPP4ZtvvldZ%0Ai/D169ctdeVTtq3mzJlTfdazZ0eUKHE+pk+fpw4WevvtlZg//2m10nno0CHU%0Ar38vOnVqo/qQX126tEO2bEl47bV31AqlPPO5a9fvyJkzh5LWU8mnbLmdOnWO%0Aeib0hRcWY+HCZ/HWWyvxwQefnlSVtm3vQcWK5fHrr9vQrNkDKo6RIwfizz//%0AwiWXlMXkyTMxevSxA16ffHKSEtFAwHz5TEpKWnGaKbrUcZxXc+TIsWL16tWb%0Ao5jGbEICJEACJEACJJCGgNbyGQgEHrAsaxiAQqxaxglYljUxFAp1zfidmbuD%0A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%0AurXHHnsEl1xSFvXrt8bzzz+dGvg993TEkiVz4jafKJ+xR5+y8inPBsv/FHnh%0AhcX48cefUaFCObRp00ytmFM+Y18HjkAClE+fzwHKp88LzPRIgATiToDyeXIJ%0Atm7drr7Yy+vG5JT3V199U215lfdrX3NNdXXDZZddorbLyiWHwchJ77IydfRo%0ARD3zOXPmOPVZmzbd/jsoKKcSTnlvtjzPOXXqHLUdV1ZA5TlSOaVetuTeeusN%0ASljl2b2U64033lOHzaT87MRtttx2e3INA4HAy5ZlNR45cmDqO8vj/pctCwGI%0AfMq71ydPnqmeBZa5Wbv2Tfjuu+/xwgtLkC1bkpqD3HabBci8lQSiJMCVzyhB%0AmdiM8mli1RgzCZCASQQonydX66+//saKFZ9g9eowfvnlV7XVVg4ISrnmzl2A%0Abt3uR61aNSFtZcts06b18f77H2HcuGG46642mDZttGp+//0PqedB5cCgfPny%0AYuzYqWrl6rvvNqhVK7nkvdhyWJG8w1tEtmfPB3DllcnqM3mmr0uXfmjWrIE6%0AlEgOmZFtu61b350az5w5L6Vu843H3OPKZ+ypp6x8inTKSvi0aXPx6adr1P/w%0AkHkoB1nJFm3KZ+xrwRFIgPLp4zlA+fRxcZkaCZCAFgQonyeXQVaQZBttzZrX%0AQN7fKaeHymqlXDNmPI8tW7ZiyJDe6p/lcCDb/lKtSt1003UoUeJ81Kp1t3p1%0Ailzff78Jl1xysepLxHHfvv2YPHmWWjm99trqGDDgCTz88IMoWbI4duzYhUaN%0A7sOKFYtT3+MtJ93++ONPuPrq6rj66mooXrwo6tRphkaN7kgNfMGCpXjzzRfj%0ANp8on7FHnyKfZcuWUa/+kRV4ee1OOPy1OhxLLm67jX0dOAIJCAHKp4/nAeXT%0Ax8VlaiRAAloQoHyeuQyffLIas2a9iFGjBqvnLkUeH330Yci7NeWS5zVlJUou%0AeW1KUpKlDgxatGim+tmJBw4dOXJEvSpFXpvy77/78Ndf/6Bz57aq7UsvvYqp%0AU2dj+PBHUrf3pkQnhw7JyqdIa6dOfXjabTp/e/y47VZOuy1duhSWLXsLH3zw%0AmTrkSiT05puvU6/xoXxq8a9UBpEABCifPi4y5dPHxWVqJEACWhCgfJ66DHv3%0A/qm23Moq55w5L+PgwYN44IF7Ubfuzcfd8OWX36rtj59/bisZeOKJAejWbQAG%0A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%0A2PA2iGxOmfIE8uTJg99+2/1fvxOVeDZoUAeFCxdSXYtUTp8+Vm3zFQGV3594%0AYqLKS35VqlQRderchIkTZ2D48EdSwwmHv1Iru+3bt3RlKlE+XcHITkiABEiA%0ABEhAOwKUT+1KYm5AlE9za+dl5H6UT9nOKs9EpqxuyjbYHTt2oW3bZsfJ5759%0A+7B371/Inj0bcufOrYRu6tTZGDasr9rKm/bq3XsobrvtVmzduh3z5i08qURz%0A5kxEkSKF0L//CHz44efo3buT2np75ZVBtZ131qwX1HbfHDmy48iRo6hePYBB%0Ag3pi8OBRShTPPjuvWlkdNqyPikOuIUNGoW/frko6JZ6SJYurn8v4ixe/jgUL%0AZmD8+GlqdVc+S06urCT3/fc/xqZNP+H++1u4MpUon65gZCckQAIkQAIkoB0B%0Ayqd2JTE3IMqnubXzMnI/y6esFsrqY968eU8pn8I5FPoSTz31DK6/vgZWr7Yx%0AcuQgtVKa9lq+/F288spyzJgx7rifi+DKM6Znn50PXbu2QyQSQYcOvbFnz15M%0AnPg4Vq1ai/XrN6Jbt/vx66/bMHXqXOTJk1ttyRUJlWc/pV+Rz+eff0Vtq5U+%0ARVRPvG644Wrcccf/1OFCTZu2x7ZtO9S24MsuuwSyUtu2bXfMnz9FHVD03nsf%0AYfPmn9GuHeXTy79LHIsESIAESIAETCNA+TStYhrHS/nUuDgahZZo8iny1rjx%0AfZg2bTR+/323qoQ8Qzl+/DO48spk1K5dU/3s3HMLqNVG2cLapUs/3HjjNerZ%0AzbTXfff1UAcVNWp0e+qP5TnPDh16YdGimfjii2/w2mvvKDHt3/9xyArsXXfd%0Ahly5cqrnO0U+5froo1X45JM16Nu3S7ozY+XKT/Hpp2uwYcOPKFasqNrGKzmJ%0AcMrzpPLPMo6s0LZpc2ylN6sXVz6zSpD3kwAJkAAJkICeBCifetbFyKgon0aW%0AzfOgTZfPZ555DuXLX4S5cxekHjiUsu3277//UYImq4Ep22737v0TsoVWJO3t%0At1em8l69Oqy2wsolJ+XK86EdOrTCvfd2VSuO4fDXagXzl19+Tb1HhPKxx449%0Aa5k9e3b1bKdcDRu2PU4+ZXuv3C8rlRdffKESUnlW87rrrlLi27nzI7j//paw%0A7S/Vs6Zy8q0IZcq1f/9+9eynHGokbSWOESOeUvnKluGRIyepU3RFdmUVVlZ7%0A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%0AIAESIAHtCFA+tSuJuQF5JZ/BYPANALWF1AUXlFDbCnmdmYDIxpYt25QcyWVZ%0AVr9QKPR4PLiZLp/CcvLkWThw4ADuvLMOXnppCbJnz46///4HP/74M/bs+QPn%0AnXcuatW6EW3aNMPPP/+Kbdt2HIda5G3BgmVKFGXr7onX8uXvqq24M2aMO+4j%0AOfTnyScn4eyz86Fr13ZKfDt06I09e/Zi4sTHsWrVWqxfvxHdut2PX3/dhqlT%0A5yJPntxqS65IqDz7Kf1KDs8//4raVit9iqieeMnq7h13/E8919q0aXuVQ7Nm%0ADZRUV68ehEj4/PlTlIS/995H2Lz5Z7RrR/mMx98pjkkCJEACJEACphCgfJpS%0AKQPi9EI+A4FAS8uy5sqX+7FjH8Xllx87pIVXdARef/09DBz4hMjn0UgkckE4%0AHN4W3Z3utTJdPkUyly59C/v370eTJvWxbdt2vPLK63jooQeUyI0d+zTq1r1F%0AbVGVFcR33vkAH3+8Wj1/CTgoU6Y0rr66qpJU2dp69913HgdXtrB26dIPN954%0AjXp2M+0l23rr1LkZjRrdnvpjec6zQ4deWLRoJr744hu89to7Skz7938cchDR%0AXXfdhly5cqrnO0U+5froo1X45JM16Nu3S7qFXbnyU3z66Rps2PAjihUrqrbx%0AipCKcMr/+JF/lnFkhVZk242LK59uUGQfJEACJEACJKAfAcqnfjUxNiIv5DMY%0ADI4H0K1bt/Zo1aqxsaziGXjHjn2werUtIdSxbftNr2MxXT5HjpyIDz9cpZ71%0ArFGjKho3vkPJZ+3aNykhfemlV3HVVclK9OT3lOvFF5eoe2T1UC45ffa99z7E%0Ao4/2Oa4E997bVa04hsNfqxXMX375NfVzEcrHHjv2rKWstsqznXI1bNj2OPnc%0At2+ful/GuvjiC5WQyrOassoqhwd17vwI7r+/JWz7S/Xsqpx8K0KZckke8uyn%0AHGokbSWOESOewpgxQ5E9ezaMHDlJnaIrsiursPKsqTxLmvaZ1azMK8pnVujx%0AXhIgARIgARLQlwDlU9/aGBeZR/L5GoDbRo8egpo1rzGOkQ4Bi0QsWiQY0cW2%0A7VO/wyOGgZoun4JmyZI3sG/fftxzz13q9Soin8WKFcHu3XuxZs06JXzyz2lf%0ARXKifMohRW3adMWSJXOOo33o0CG1fXfevEWoW/dmvPrq////AXmm85prqqv2%0A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%0ANGrUBH322ZrDSlSyZAn7OK1Ze1mv3j2qUOF8nXPO2TYkNmvWUF99tVkffvix%0A0tNXq1ChQipevJjq1KltZ0qbNm2vf/7zavs4b+XKl+i662pq69af9PvvO/Xk%0Ak9PUt28321e5cuepaNFT7H/36PGwTjutuPr166G77uqkAQN6afPmb3X99dfY%0Az0eOfEq1a9dUMHhpnm8lwmee6TjRJQHCp0vQdIMAAggggIDLAoRPl8HjuTs/%0Ahs/Bg0erRInT1LFjy8NKs23bdvXvP1yNG99qQ6MJl3PmLLBrPTt2TNWCBYsV%0ADFayIfDbb7/X0KFj1bBhXVWpkqyiRYvIhFbzOG6xYkU1b94iLVjwtN544307%0AW5rzaNWqmS6+uIK+++4HNW3awT76O3z4w/rtt//qwgvL6amnpmvUqIH2tBEj%0AxtsgmpxM+Mzt/6VgMGgW1XYyM8+3335rbl/ncw8JED49VAyGggACCCCAQAQF%0ACJ8RxEz0pvwWPmfOnK+JE2fqwQe7qn79OlnlM8GzU6cH1L//fapU6WL78927%0A99j1oZMmzdTjjw/R9OnzVLr0mSpf/jzdd98A7dq1R3Xq/NN+9957W6tgwQL2%0Av80so9l8yATY3I7Roydq3779KlCggFat+lwTJoyQedTX9GH+Md6lS2sNG/aE%0A6ta9PmtcubV5tM+Z+cyLGue4KUD4dFObvhBAAAEEEHBPgPDpnnXc9+Sn8Pnz%0AzzvUufODqlnzShsiTcj85ZdfbY1MyDS733bo0ML+2cxeXnBBWfvzMWMmZoXP%0APx7JfVbbt/+soUMfygqbs2aNU+HChbRy5eeaOnWOnRFdsuQT+yhu27Y9Vbjw%0A/zYPOnjwgN57b5ENt50799FddzXS2rUbdMst16tMmdJq0aKLpk9/Qv36DVPP%0Anh2y2jObG+X1IHzmVY7z3BIgfLolTT8IIIAAAgi4K0D4dNc7rnvzU/g0hdi/%0Af7+ee+5lu2vtzp27tHr1f2x9zJrMTZu+yZpdNDOXzZs3PiJ8mtBqwmubNj3V%0AtWsbe+6YMZPsGlETPu+5p4tOPLGgqlYN6sorU1So0Il2pjXzEVrz/UaNWmnh%0Awulat26jvvhirV37mfmqlZdeet2G2zPPPEM///yLnZ1du3a97rnnDrtONK8H%0A4TOvcpznlgDh0y1p+kEAAQQQQMBdAcKnu95x3ZvfwqcphlnHacJn9sduTRCc%0A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%0A/Y/q3XuQnnlmYpb/nj179cYb72nYsCfVtm1zuxbUhMn7779XLVt21dy5EzRi%0AxHjVqnW1nf00R/Y1n5kNmdnNzJnPnMX94IOP9O67H2rQoPujVnfCZ9RoaRgB%0ABBBAAAEEEEDgbwQIn9weEROIp/Bp3t953XWN9c47C8wGOfrtt//a16pUrZqs%0ALVu2auDA+9WtW1/NmjVOb775vn2FSo8e7e2s5S23XK/KlS/JCp+NGtVV8eLF%0A9M47H+rAgYMy7/M0j/FWq3a5/c6tt96gCy4oa//bvG7l4MFDatWqacTqkrOh%0ASIfPoz12m5GRcWEgEDBrPYv+2T+P3UatojSMAAIIIIAAAgj4Q4Dw6Y86+WKU%0A8RQ+DXiTJu31+OODVaqUWcoo7du3T7t27bGP3T755KP2EdlixU6xj97OmzdZ%0Ap59e3D5aa17NUqZMab355geaMeNZFS1aRB07ttRvv/2uQ4cOadOmb7Rq1eeq%0AX/9m2+7ll1fOWvM5cOBIXXPNVapVq3rUah7p8Pl3A01JSbk9IyPj9kAgcLv5%0AHhsORa2sNIwAAggggAACCHhegPDp+RL5Z4DxFj7nz39Jv/++074qJfPIXPNp%0A3vOZkZGh1q17qGbNK5Wa+sdMZbNmHTR+/DAFAklauHCxbrihls4556zDivhX%0Aj93u3r3Hvudz7tyJKliwQNQK72b4zLyIYDCYKmm6+TOvWolaaWkYAQQQQAAB%0ABBDwtADh09Pl8dfg4i18mtetmLWcM2eOywqD2cOn2dl20aLXNHBgb/vKlM8/%0AX6uKFSuod+9ORxTupZde19y5C7N+7jiOfZzXHOacQYN6282KzGHeExrNIxbh%0A01xPMBgcKukhSav37t171Zo1a3ZG8zppGwEEEEAAAQQQQMBbAoRPb9XD16OJ%0At/BpirFhwyb7SGyRIifb2pjHZr/7bot9rYo5MkOkWRNaoEABFS5cKM81XLPm%0AS5UrV1YFCxbMcxvHcmKswuefAfQNSTdIGhQKhaL3PplsEH++b7SX4zjlA4HA%0AH4trOTwp4DjONvO/Xb58+Z5ZsWLF554cJINCAAEEEEAAgTwLED7zTMeJOQXi%0AMXzGY5VjHD5HSuolaWYoFDKP4kb1SE5OrhMIBCZLKhPVjmg84gKO4/RPT08f%0AEvGGaRABBBBAAAEEYiZA+IwZffx1TPj0R01jGT6Tk5ObBAKBeY7jLE1PT786%0A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%0AV+iKK4I2pIZCq7N95Gjo0LF/GT4zv7h160/q1q2fnYnMfNz1aDfFunUblJra%0AXUuWLLaP0X78cZoqV77EBlYz89moUV2ZsDlhwmMqXLiwfvrp5z/bHWeDZ4MG%0AdVSixOm2aRMqp04dYx/zNQHU/P7YY+O0YcMm+6tSpYtVp84/NW7cND3yyINZ%0AwzGzu+aR3czAHe7NS/gMV5DzEUAAAQQQ8KYA4dObdWFUCMStgN/D5/Tp82yw%0Aq1Wrug1cTz01QxdfXEHXXVczq2bvvbdUZh1oq1ZN9eOP29SuXS/VqHFF1uen%0AnlpMbdrcZf+c87HbzC/17j1Ideter++/36I5cxYccT/MmjVOZ5xxuvr2fVT/%0A93+fqHfvTvbRWxN4y5c/XzNmzNO6dRtVoEB+HTx4SFWrJqt///s0YMBIO+4i%0ARU6yM6tDhjxgg6U5Bg4cqT59utrQWbJkCZ19dmn7c9P/okWv6fnnp2ns2Mkq%0AXbqk/SwlpbK1ePfdJdq48Wu1bds8Ivct4TMijDSCAAIIIICA5wQIn54rCQNC%0AIL4F/B4+33zzffsorFlH+cgjj6tWrat16603aPnylXr22Rc1cmR/paV9ph07%0AftGNN9aSWY9pZksz13jmrO7Rwuerr76tF154VdOmPX7Y182mPyNGjFeRIier%0Aa9c29pHe9u17277GjRumjz9eobVrN6hbt7b67rsfNGnSbBUuXMg+kmtCqBmz%0AadeEz2eeecE+VmvaNEE153HNNVfZ6zKbCzVp0k4//PCjmjZtoEsuuVBVqwbV%0AqlV3zZ07wW5Q9M47H2rTps1q04bwGd//93J1CCCAAAIIhCdA+AzPj7MRQOA4%0ABfwePjMv1wRPMytpdqk1j51efnlldejQUiVLnq6iRU/JUjEh77///f2wmc9A%0AIMnOlpojZ/g0bXXp8pCuvba6XbuZ/Wjduofq1Kmtxo1vyfqxWefZvn0vLVw4%0AXatWfaFXXnnLBtO+fYfZ4NuwYV2dcEJB+1iwCZ/m+PDDj7V06XL16dMl1+q9%0A//4yLVu2XOvXf6VSpUrax3hNIDWB06wnNX82/RiL1NSmubZ3LF9g5vNYlPgO%0AAggggAAC/hMgfPqvZowYAV8LxEv4/P33nZo//yWtXPm5Gje+Vddee5UNkk8/%0APVePPz4465Ulixe/acNb9mP58nS9/fYfj9LmDJ8tW3a1M47p6Z/bGcxvvvku%0A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%0AlUowDgQSRIDwmSCFDuMyCZ9h4HEqAggggAACHhYgfHq4OAwNgXgUIHzGY1Uj%0Ae02Ez8h60hoCCCCAAAJeESB8eqUSjAOBBBEgfCZIocO4TMJnGHicigACCCCA%0AgIcFCJ8eLg5DQyAeBQif8VjVyF4T4TOynrSGAAIIIICAVwQIn16pBONAIEEE%0ACJ8JUugwLpPwGQYepyKAAAIIIOBhAcKnh4vD0BCIRwHCZzxWNbLXRPiMrCet%0AIYAAAggg4BUBwqdXKsE4EEgQAcJnghQ6jMskfIaBx6kIIIAAAgh4WIDw6eHi%0AMDQE4lGA8BmPVY3sNRE+I+tJawgggAACCHhFgPDplUowDgQSRIDwmSCFDuMy%0ACZ9h4HEqAggggAACHhYgfHq4OAwNgXgUIHzGY1Uje02Ez8h60hoCCCCAAAJe%0AESB8eqUSjAOBBBEgfCZIocO4TMJnGHicigACCCCAgIcFCJ8eLg5DQyAeBQif%0A8VjVyF4T4TOynrSGAAIIIICAVwQIn16pBONAIEEECJ8JUugwLpPwGQYepyKA%0AAAIIIOBhAcKnh4vD0BCIRwHCZzxWNbLXRPiMrCetIYAAAggg4BUBwqdXKsE4%0AEEgQAcJnghQ6jMskfIaBx6kIIIAAAgh4WIDw6eHiMDQE4lGA8BmPVY3sNRE+%0AI+tJawgggAACCHhFgPDplUowDgQSRCAewuf+/fuVlJSkfPnyadeu3Tr55JNs%0A9Q4ePKj8+fNHtJJ79+7TiSeekKc2Dx06ZMcZCBz5V31GhqOkpMN/br5vrulo%0Ax/79B1SwYAH7kTnXNHm0dvM00BwnET4joUgbCCCAAAIIeE+A8Om9mjAiBOJa%0AwO/h88CBg5o69V+68MJySk6+VA88MFjjxw9TwYIFVb9+S7300qzD6vfii//W%0A6tX/OaKm7drdrZ07d+mCC8rq1Vff1o8/blPr1s3kOI4c54+vb9nyo/r0eUSz%0AZo0/6j2RGR4/+miFli79VGXLllG9ejdlhcTBg0erefPGOv/8c/XBBx/pmmuq%0A2Xa2b9+hXr0GaubMJw9r9/bb22j27PEqVOjEw37+22//VffuD2vGjCfszxcs%0AWKwtW7aqS5c2UblXCZ9RYaVRBBBAAAEEYi5A+Ix5CRgAAokl4PfwOXPmfL34%0A4ms66aSTVLRoEf3nP+tVo8YVatHiTvXsOUAtWtxhC3rSSYV14421ZILb7t17%0A1KZNT02ZMlr58iXZz08/vbjuvLOdFi6crldeedOGzzZtmmvmzGf1+uvv2e98%0A//2PKl682BFh0HxWsWJ5DRjQy36vY8f7bf8mVL766lt65JE+6tfvMW3a9I3O%0APPMM29e5556dFRZHjpyg8uXPU/36dTR+/HR99tka284XX6xVxYoV7GxpsWKn%0AaMSI/vbnOcPn3Xd3VunSZ6pChQuybl4TxIPBSyNyMxM+I8JIIwgggAACCHhO%0AgPDpuZIwIATiW8Dv4dMEunnzFum8886xAXD06Inq27e7nd00oenyyy/TlCn/%0AUvv29+i662raYm7c+LW6du2rjh1b2D+fe24ZXXppRTVq1OqI8JlZ/a1bf1K3%0Abv3sTGTm465HuzPWrdug1NTuWrJksX2M9uOP01S58iU2sJqZz0aN6sqEzQkT%0AHlPhwoX1008//9nuOBs8GzSooxIlTrdNm1A5deoY+5ivCaDm98ceG2evy/yq%0AVOli1anzT40bN02PPPJg1nDS01fLPLJrZnMjcRA+I6FIGwgggAACCHhPgPDp%0AvZowIgTiWsDv4XPChBnaunX7ETVau3a97r23lWrUuFK33tpcixfPyfqOmc3c%0AvPk7+6ju+vVf2TWiPXq0Pyx8btmyTW3bNs86p3fvQapb93p9//0WzZmz4Ij+%0AZs0apzPOOF19+z6q//u/T9S7dyf76O0VVwRVvvz5mjFjntat26gCBfLr4MFD%0Aqlo1Wf3736cBA0baoFikyEl2ZnXIkAdssDTHwIEj1adPVxs6S5YsobPPLm1/%0AbvpftOg1Pf/8NI0dO1mlS5e0n6WkVLYh9913l9iAnX384dzEhM9w9DgXAQQQ%0AQAAB7woQPr1bG0aGQFwK+D18mqKYAJr9KFv2HPuzq66qYtdtdur0gJ3RNIeZ%0AaWzRoosWLJimwoUL6fHHJ9uZyX/+8+q/nPk0a0BfeOFVTZv2+GH9mE1/RowY%0AryJFTlbXrm2UkZGh9u17a8eOXzRu3DB9/PEKrV27Qd26tdV33/2gSZNm2z7N%0AI7kmhJq1n6ZdEz6feeYF+1itadME1ZzHNddcpVtvvcFuLtSkSTv98MOPatq0%0AgS655EJVrRpUq1bdNXfuBLtB0TvvfKhNmzbbx4YjcRA+I6FIGwgggAACCHhP%0AgPDpvZowIgTiWiAewufNNzdTz54dbJ1efvkNu9bRBLKhQ8fa8Pn66+9mrZe8%0A776BNpiZNZG9e3dWs2YdNH36WBUrVvSo4dM8wtqly0O69trqdu1m9qN16x6q%0AU6e2Gje+JevHZp1n+/a9bNhdteoLvfLKWzaY9u07TGYjooYN6+qEE8xmSHVs%0A+DTHhx9+rKVLl6tPny653mvvv79My5YttzO2pUqVtI/xmkBqAqdZT2r+bPox%0AM7SpqU1zbe9YvkD4PBYlvoMAAggggID/BAif/qsZI0bA1wLxED5r1Wqom2+u%0AbesQCn2mnj07qkqVy+z6TxOcbrutjm66qZb9/M0339d1112jOXOet4+ulilz%0Alp58cqj97GhrPlu27GpnHNPTP7czmN98811WvU2gHDr0j7WW5pUuZgY1ezuZ%0A4XP37t32fDNTaXbTNYHUrNU0jwSbzYPuvfdBtW17tx177do17M63JlBmHnv2%0A7LFrP82aVvNdM45HH31Co0cPUv78+TR8+Hi7i67pz8zCmrWmZob3nnv+2Gwp%0A3IPwGa4g5yOAAAIIIOBNAcKnN+vCqBCIW4F4CJ/16t2tgQPvtzV69tlFuv32%0AejZ8fvHFOrur7TvvLLCPu2Y/TLhr1aqbXeuZMzRm3+3WvEP0q682a86chTbg%0AvvTS61nNmDWd1atXtX827WfudpsZYjPDp+nDPAZsZibLlTtPixe/oZtu+iN8%0AjhkzSZ9+mm7Xhppfl19e2e66u2jRzKx++vcfriZNGuiii8rbx3zNRkmZr1rZ%0AvPlbmYAcDFbSjh2/qnjxU1Wz5pXas2evmjSpH5H7lvAZEUYaQQABBBBAwHMC%0AhE/PlYQBIRDfAvEQPmvUuE0pKZVsoTZu3KT+/XvZ8Dlr1nxNnTpHY8cOsbve%0AZj8mTZplX6cycGDvrB8PGTJGDz/c87BXrZgPzeZFJnzmfOy2Xr179PLLs4+4%0AQbKHz+nT59mNiMyjtmaWs2TJM+wMZ2pqExs+TQjOfD+oCbq7du2xofho4fPi%0AiyvYNaFmJjQzfJr3e5pZVXO9JUqcpkGDRtmNlMwmRebR3kgchM9IKNIGAggg%0AgAAC3hMgfHqvJowIgbgWiIfw2bBhK02ZMsrWaeLEmXZW0bzL87XX3rZrQQcM%0AGKG+fXuoTJnSOnDgoMaPn6b//OdLPfXUcLvxT87DbP7zx7tA77IfHS18Oo4j%0AM+OafRfdzHYyw6eZGR04cJRmzBirZ5990a5DNa90MRsKmbBowqdpe9myFfr0%0A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" alt="数据结构"></p>
<h2 id="2-线性结构"><a href="#2-线性结构" class="headerlink" title="2.线性结构"></a><em>2.线性结构</em></h2><h3 id="2-1-数组"><a href="#2-1-数组" class="headerlink" title="2.1 数组"></a><em>2.1 数组</em></h3><p>最常见的数据结构，用一块连续的的内存空间，来存储一组具有相同类型的数据，其中java中ArrayList类实现这种数据结构。</p>
<blockquote>
<p>数组的特点：</p>
<p>①只能根据下标进行检索数组元素，并且下标从0开始。如果是顺序检索，那么数组的速度很快了，但是如果是按照值的内容去检索时，我们一般只能通过循环整个数组或算法进行检索，无法直接。</p>
<p>②声明数组时，必须声明数组长度。这就变成了，一旦初始化一个数组，它的大小就固定了，无法动态扩展数组的元素个数，只有在固定长度的时候，可以优先考虑数组。</p>
<p>④插入快，即元素没有按照大到小或者某个特定的顺序排列，只是按照插入的顺序排列。无论是增加一个元素还是删除一个元素都很方便，只不过删除的时候，是删除下标的元素，数组不会将后面的元素前移的。</p>
<p>③数组一旦初始化成功，那么其中的每一个元素就已经在内存上开辟好地址了。即如果数组的元素是对象的话那么每个元素都是null，如果是基本类型的话，获得的元素都是默认值。</p>
</blockquote>
<p>以上就是数组的基本用法，以及特征。在java中声明数组:</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>&#123;</span><br><span class="line">	Integer [] arr = <span class="keyword">new</span> Integer[<span class="number">10</span>];</span><br><span class="line">	arr[<span class="number">1</span>] = <span class="number">100</span>;</span><br><span class="line">	arr[<span class="number">2</span>] = <span class="number">200</span>;</span><br><span class="line">	Arrays.stream(arr).forEach(System.out::println);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>总结：数组有很优秀的查询特性，当然有兴趣的小伙伴可以去单独看看，数组还是有很多用法的，比如多维数组</p>
<p><img src="%0AeZxcZZ3v8e9T3U0WSMIiwyIXMQR1IgmpUwlLEiTgMuPCgIwBB9E7uMQFdHC7%0ACjjDIsuMiKPXGeYG4So6w8UJ66CMGJYoYID0eaoTTMMMAcJOZFEaQneS7vPc%0A19OvKl6VNklv59RZ6lP/AOlTz/L+PVR/85yljHghgAACCCCAAAIJC5iE26d5%0ABBBAAAEEEEBABA4WAQIIIIAAAggkLkDgSJyYDhBAAAEEEECAwMEaQAABBBBA%0AAIHEBQgciRPTAQIIIIAAAggQOFgDCCCAAAIIIJC4AIEjcWI6QAABBBBAAAEC%0AB2sAAQQQQAABBBIXIHAkTkwHCCCAAAIIIEDgYA0ggAACCCCAQOICBI7EiekA%0AAQQQQAABBAgcrAEEEEAAAQQQSFyAwJE4MR0ggAACCCCAAIGDNYAAAggggAAC%0AiQsQOBInpgMEEEAAAQQQIHCwBhBAAAEEEEAgcQECR+LEdIAAAggggAACBA7W%0AAAIIIIAAAggkLkDgSJyYDhBAAAEEEECAwMEaQAABBBBAAIHEBQgciRPTAQII%0AIIAAAggQOFgDCCCAAAIIIJC4AIEjcWI6QAABBBBAAAECB2sAAQQQQAABBBIX%0AIHAkTkwHCCCAAAIIIEDgYA0ggAACCCCAQOICBI7EiekAAQQQQAABBAgcrAEE%0AEEAAAQQQSFyAwJE4MR0ggAACCCCAAIGDNYAAAggggAACiQsQOBInpgMEEEAA%0AAQQQIHCwBhBAAAEEEEAgcQECR+LEdIAAAggggAACBA7WAAIIIIAAAggkLkDg%0ASJyYDhBAAAEEEECAwMEaQAABBBBAAIHEBQgciRPTAQIIIIBAKwiUy+V3SHq5%0AWq2uHjrfIAhml0qlts7OzupwFuVy+U2SDqpWq7cNd2yefk7gyFO1GCsCCCCA%0AQGYEDj300D36+/tvj6Lo+K6urvVBEPxa0hpr7emVSuVk59xia+0H/YCDIPh/%0Akt5ira0MN4EgCM6QdKG1dmd/bKVS6XDOXTjc+/zPS6XS8s7OzuUjObbZxxA4%0Ami1OfwgggAACsQuUy+UvSeqsVqv+l37TXkEQ/EzSM9baJfXAMWnSpDN7e3sf%0AkvQNa+0Pa6Hht1EUra5Wqx8ZbnDbCByTnXMbJa2X9OIO3j9b0kXW2nOH6yON%0AnxM40lCnTwQQQACB2AQWLFgwpbe3t0fSFkmrnHOdPnxs3rz552vXrn0pto62%0A0dDcuXPLURRdPnXq1CN6enru8DscpVLpliiKvmytfZckN3PmzJ0mTpy40Riz%0AzDl3VWMzURS91NXVtarxz3YQOD5qrf3X7c0nCIJnJF1O4Eiy4rSNAAIIINDS%0AAkEQuG0APF0PH6VS6dowDP2uQ2yvcrn8IWPMwQ0Nnippg6Rb6n/W399/RXt7%0A++6S/ui6jtoxd1hr3+n/PQiC0yTtKelwScf43QpJfzDGXF7b4SBwxFY9GkIA%0AAQQQQGAMAtsJHFu1ZIzpcs7d7ZxbFseplyAI/KkLHwz8y4eEtlrgWFfv2Dn3%0AGX8ZhjHmRwMDA3/a3t7+iv+Zc26tc+6Cjo6Oq+6///7B0yRBENwuaYakKZJ2%0AlfSkpKeNMe+qBY4BSdEOeDoknccOxxgWEG9BAAEEECiGQO2Xc5yT8TsajZcF%0AnDPKxnuNMY9GUdRtjOkezy/pSqXyWefcJyRtkjTHOXfppk2bvtXd3f1qLUjc%0AIOm9PT0909atW7epdoqlz/+ZtfbWoePewSmV70n6VUOY+bIxZqqk1+dujHkw%0A7p2cUbpu93Cu4YhLknYQQAABBLYrMJIdiDT5nHMrSqXSsjAMLxvNOIIgOMVf%0AN1EqlRZEUeQDwdOSdnHOzTPGfN0593NjjP+zDmPMMWEY3lmpVPZ3zj0uaaa1%0A9sHhAsfs2bN3bm9v9+Flq1MqQRBc40/B1E/JjGbcaRxL4EhDnT4RQACBFhNo%0ACBznDZn60J2K1/8CP2QHY6jYeHc4/GmNDX53Q9Jaa+3nR1uSIAj8HSgfNsZ8%0ALAzDZQ23xX6+Uqn4u2b8RazGOfdtSb6fm6213wiCwJ9+WdnX1zelvgvS2PeQ%0AHQ4zb968/QYGBp6Q9I+S7trRDof/mbX2Rn/WZrTzSfp4AkfSwrSPAAIIIOCv%0ATxj8BWitTeT3zih2UNYbY67313FYa+8dT2mCILjA72BUq9WVPlhUKpWvOeee%0AaryTJAiCFZJ8WPilpC/653AEQXC6pHOttW/YVv+1wHGxpLMkvadUKp0TRdF9%0AkoZew9Fee39/YzvGmJ3DMPRhJ1OvRAqfqRkyGAQQQACB1AXSDBzOuZeMMTf5%0AO1U6Oztfv4MkTpRyuXyeMcY/6GtmY7tz5871p1p8/487555zzh1pjPmmMebV%0AMAxPbjx2xowZE6ZOnbrIOeevzXi3pBf8A8CiKHqsVCrdaIyZHYbhA/X3cEol%0A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%0AOxwxLRyaiVWAwBETZ6t9oLHDEdPCSbkZ1m3KBYi5e3Y4YgaluVgFChc4/rBx%0As+5c84z6ByK9u7yfdt15p1jBttdYsz64f/PgBr1tv121+5QJWw3l6Rc36ncv%0A96o8/Q2JzjfteT624RW9tqlfb99/t0LMs3ESqx97UQORU3BgsjVs7LNZ9Wzs%0A85Fne7RlIBpcx816pTHPZs1tW/VkhyMNffocTqAwgSNyTku+f5c61z2vdxy8%0Aj/o29+uONc9o3kF76l+/fIzaSslOtVkfaHO+cJ2++6kjtGjWvlvV9oe3/Zf+%0A477HdcPZ7xmu5uP6edrz/Ptru7R+wyv6P6cdOa55DPfmZs2zPg4fNA74xNXa%0A0h/piR9+RDu1l4YbYiw/b/Y8/aAv+KnV8y/36XtL5scyh5E0ksY8RzKuuI9h%0AhyNuUdqLUyDZ38KS6l/elvQW/MqHNuj4C36p/156kqbVdjX834QPWnKNLvn4%0A4Tr5qBlxuv1RW836QCNwFDNw/GzVE7r0hjWaMqlDpxx9kE5cOD3R9VpvvFnr%0AtnEyBI7kSuvrGb6yjzpf2ee85HoZ/Abw0f7u8O8514/JWjva9yY4FZpupkDi%0AhW9W4LCPvKD3nvOfWvNPH9Jeu0563XDVw8+rZIwqM5Ldpm7WBzeBo5iB47gL%0AbtXiBdO188QOXXbLWi3/5vub8jnQrHVL4GhKOQe/YmHpM0FzOhtjLwSOMcIV%0A4G2FCRy+Fmdedb+uXP6Q/nL+dJ0w/wAdPWtftbcVa2vaB44T5r9ZBw+5hsGf%0APvLXcXBKJZ7/K5v5i/jZl17TrNOv1ZM/OlntpZL+x6n/ppXfPl5v3mtKPJPZ%0AQSvNnGd9GOxwJFfWJu1wjGsC1trBnQ5erSdQqMDhy/fc71/T9SvX6/rfPKbu%0AJ3+v097/dp21uCyT8Eyb9cHtA8e+u0/WPrtP3mq1PvzMy9pjykQCR0z/Dzer%0Ann64F/17VU++sFH/8rmFg6P/0hUrNWlCuy786LyYZrP9Zpo5TwJH4uV8/Usk%0As3jRaPKzp4esCyT8a7h513C8vHGzSiUzeA68/nrqhY36y4uX64NHHKCvf2hO%0AorVo1gd3q5xSOezLN+obJ5V17KFv2qpuZ/9klV7t3ZL4BYfNqqdz0owl1+iQ%0AN++uGftMG5yrvxPnNw8+N3jxaFEudm4sIjscyX0UZfmi0eRmTct5EShM4Pju%0ATQ/oxnvXa8XFx25lf/Wv1unKXz6k2y/8QKI1adYvqFYJHH91ye36k2mT/ihY%0A+CDyV+84UGccN6sQ9byt62l97l/u1tknlreaz7euW62L/+eh+ovDtg5ccU+6%0AWeuWwBF35bbdHoGjOc70MjaBwgSOdc/2aPbp1+qqLy4a3NHw1268+Eqfjj3/%0AVs3/07307Y8fPjahEb6rWR/crRI4/F0bn73sLl31xaO1aNY+2rwl0g33PqZP%0Aff/X6r7sRO2/5y4jrMzYDmtWPT/8rdsHL2j+6gmHbDXQ/33zb7W8+pRu/rs/%0AH9sERviuZs2zFQLHK71bdPkvHtTpH3i7JnS06T/DJzV5QruOOngfDf3ZCMsz%0A6sMIHKMm4w1NFChM4PBmt3Q+oe//bK26Hn1R0ybvpFJJek95v8G/KU7aqT1R%0A1mZ9cLdK4PDF+s6Na3Tu1aGmTt5p8APbP8Ttss8u1Pvn7Z9oLX3jzajnCz19%0AetPHr9YjP/iw9t5t62ty/M/2P/VqPXz5SXrjHjsnNt9mzHPo4It6SsV/7iw6%0A62bZ756g6XtP1Yn/cJt222WClp525OBnUuPPkioogSMpWdqNQ6BQgaMOsmnL%0AgPwTRxtvj40Da0dtpPHBnfScttV+s+fpH+j25PMbNXGnNuqZQMGbXc8EpjCi%0AJps1T39NTv0C9cZ/94Mc+t8jGvgoDyJwjBKMw5sqUMjA0VTBWmfN+kBLY26N%0AfTLPtCsQb//UM17PtFsjcKRdAfrfkQCBI6b1wQd3TJAZaYZ6ZqQQMQ2j1erJ%0AbbExLRyaiVWAwBETZ6t9oCX9qPqYyjLmZqjnmOky+cZWqyeBI5PLsOUHReCI%0AaQm02gcagSOmhZNyM6zblAsQc/ecUokZlOZiFSBwxMTJB3dMkBlphnpmpBAx%0ADaPV6skOR0wLh2ZiFSBwxMTZah9o7HDEtHBSboZ1m3IBYu6eHY6YQWkuVoGm%0ABY5YR01jCCCAAALbFWCHg8WRRQECRxarwpgQQACBcQgQOMaBx1sTE0g8cCQ2%0AchpGAAEEEEAAgdwIEDhyUyoGigACCCCAQH4FCBz5rR0jRwABBBBAIDcCBI7c%0AlIqBIoAAAgggkF8BAkd+a8fIEUAAAQQQyI0AgSM3pWKgCCCAAAII5FeAwJHf%0A2jFyBBBAAAEEciNA4MhNqRgoAggggAAC+RUgcOS3dowcAQQQQACB3AgQOHJT%0AKgaKAAIIIIBAfgUIHPmtHSNHAAEEEEAgNwIEjtyUioEigAACCCCQXwECR35r%0Ax8gRQAABBBDIjQCBIzelYqAIIIAAAgjkV4DAkd/aMXIEEEAAAQRyI0DgyE2p%0AGCgCCCCAAAL5FSBw5Ld2jBwBBBBAAIHcCBA4clMqBooAAggggEB+BQgc+a0d%0AI0cAAQQQQCA3AgSO3JSKgSKAAAIIIJBfAQJHfmvHyBFAAAEEEMiNAIEjN6Vi%0AoAgggAACCORXgMCR39oxcgQQQAABBHIjUMTAsa+kYyS9KukOST25qcbYBjpH%0A0rOSNozt7Zl/1z6S3iXp95JulbQl8yMe2wDbJb1Hkv/nckm9Y2smN++aKOmo%0AWk1zM2gGigACYxcoWuCYK2mZpP+QNFXSoZLeKem5sRNl9p07S/obSd+UtFjS%0A9Zkd6dgHdqSkayXdLmlj7RfUV2r1HXur2XvnQkn/V9I9kgYkvVvSNyT9JHtD%0AjW1EP5D0CUml2FqkIQQQyLRA0QJHl6SzJN1SU/9bSQfUPtgyXYgxDG6VpCsl%0AnSzpuwUNHN2SLq3N0xOdJOk8SW8bg1eW33KnpH+Q9IvaIE+o/fdBWR70OMb2%0AsVqo+giBY2SKQRCcO7Ijs3VUFEUrurq6VmRrVIwmLYEiBY63SlojaXLtb4ne%0AdHbtb41T0gJOsN9JtW13f9ronwoYOHwdH5B0mKQXao5+C/6nkvZO0LXZTXfU%0ATqX8vKHj90k6X5LfsSva62BJfnfjzyT9gcAxsvLWAsc5Izs6O0dFUXQ0gSM7%0A9Uh7JEUKHH4b+nuSZjag+l/K/lqOPSW9lDZ2Qv0XNXBsi+u6Wh0/lZBl2s0u%0AkPQOScfXdnLqO3Vpjyuu/n3w9+vV72w8JmkTgWNktHnb4XDOHWWMWUTgGFl9%0AW+WoIgUOvw19Ru0Du7F+/qLRWZIeL2hRWyFwTJD0z7W/8fsLgosaHv9akt/d%0AmCHpC5LuLtiavUbSDbVdKr+zQ+AoWIHr0ymXy3cSOApa3HFMq0iBw19457fb%0A39jg8Se1uzf8TkffOJyy/NaiBw5/Dc6/S/LXc5xWu3g0y/WIY2z+1JG/YPRN%0AklwcDWagjc9J8qdTTq+NZSdJr9XuyvFzLMo8M0Cd/hAIHOnXIIsjKFLg2EPS%0AM5L8P/1pFP/y29NXSHpLFvFjGlORA4e/OPQ2SRdJuiwmr6w1M0/SDyWVG275%0A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%0A4P8DOKI1g8PSrWcAAAAASUVORK5CYII=" alt="数组存储结构图"></p>
<h3 id="2-2-线性表"><a href="#2-2-线性表" class="headerlink" title="2.2 线性表"></a><em>2.2 线性表</em></h3><p>想先理解线性表，首先要明白线性表特点，要能知其然，才能知其所以然。<br/> </p>
<blockquote>
<p>线性结构的特点：<br/>①只有一个首节点和尾节点<br/>②除首尾节点外，其他节点都有一个前驱和后继（此处使用装X名词）<br/></p>
</blockquote>
<p>线性表，全名为线性存储结构。使用线性表存储数据的方式可以这样理解，即“<strong>把所有数据用一根线儿串起来，再存储到物理空间中</strong>”。其中线性表包含顺序表和链表不考虑排列是否有顺序，只考虑存储时是否是在同一块物理空间内。常见的有数据集中存放和数据分散存放，下面两张图均是线性表，只是在计算机存储结构上略有区别：</p>
<p><img src="../pictures/%E7%BA%BF%E6%80%A7%E8%A1%A8%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84.png" alt="线性结构"></p>
<p>此处以java接口类的方式，去定义在线性表的一系列基本操作，专业名字ADT（Abstract Data Type）抽象数据结构。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">List</span>&lt;<span class="title">E</span>&gt;</span>&#123;</span><br><span class="line">    <span class="comment">// 计算表的长度n</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getSize</span><span class="params">()</span></span>;</span><br><span class="line">    <span class="comment">// 判断表是否为空</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">isEmple</span><span class="params">()</span></span>;</span><br><span class="line">    <span class="comment">// 判断表中是否包含某个元素</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">contains</span><span class="params">(E e)</span></span>;</span><br><span class="line">    <span class="comment">// 表中查找某个元素o</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">indexOf</span><span class="params">(E e)</span></span>;</span><br><span class="line">    <span class="comment">// 访问第i个元素，0≤i＜n，元素：a[i]</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">get</span><span class="params">(<span class="keyword">int</span> index)</span></span>;</span><br><span class="line">    <span class="comment">// 将新值赋予第i个元素，0≤i&lt;n，元素：a[i]=newValue</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">set</span><span class="params">(<span class="keyword">int</span> index,E e)</span></span>;</span><br><span class="line">    <span class="comment">// 将新元素插入第i个位置，0≤i&lt;n，元素：a[i]=value</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">add</span><span class="params">(<span class="keyword">int</span> index,E e)</span></span>;</span><br><span class="line">    <span class="comment">// 删除第i个元素，0≤i &lt; n</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">remove</span><span class="params">(<span class="keyword">int</span> index)</span></span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h4 id="2-1-2-实现线性表"><a href="#2-1-2-实现线性表" class="headerlink" title="2.1.2 实现线性表"></a><em>2.1.2 实现线性表</em></h4><p>此处我们通过java中的数组实现线性表，主要是方便。但是这不能代表数组就是线性表</p>
<blockquote>
<p>数组是存在于物理空间中一串连续的，但是线性表可以不是<br>数组是一个具体的实现，但是线性表是一个抽象的<br>对于线性表只能通过前一个元素找到后一个元素，数组却可以通过下标区找到对应的元素</p>
</blockquote>
<p>下面是简单的实现ArrayList方法需要注意的地方</p>
<blockquote>
<p>实现ArrayList的多注意点</p>
<p>① 因为数组是通过下标进行查找的，所以在写的时候进行多去注意<code>下标越界</code>的问题。只要是公共方法允许传入下标的情况，都有可能存在这个情况</p>
<p>② 因为我们把长度单独定义了，所以在添加数组元素、移除数组元素的时候都要<code>长度+1</code>或者<code>长度-1</code></p>
<p>③ 长度是固定的，所以在添加元素的时候数组肯定要扩容，在移除元素的时候，考虑长度缩减</p>
</blockquote>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ArrayList</span>&lt;<span class="title">E</span>&gt; <span class="keyword">implements</span> <span class="title">List</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 默认初始化的大小</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">final</span> <span class="keyword">static</span> <span class="keyword">int</span> DEFUALT_CAPACITY=<span class="number">10</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//当前数组中的数据</span></span><br><span class="line">    <span class="keyword">private</span> E[] data;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//当前数组长度</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> size;</span><br><span class="line">    </span><br><span class="line">    <span class="comment">//允许外界自定义数组的长度，然后创建数组</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">ArrayList</span><span class="params">(<span class="keyword">int</span> capacity)</span></span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(capacity &lt; <span class="number">0</span>)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组长度不能为负"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        data = (E[])<span class="keyword">new</span> Object[capacity];</span><br><span class="line">        size = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 默认创建一个数组</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">ArrayList</span><span class="params">()</span></span>&#123;</span><br><span class="line">        <span class="keyword">this</span>(DEFUALT_CAPACITY);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getSize</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">isEmpty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size == <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">contains</span><span class="params">(E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">for</span> (E datum : data) &#123;</span><br><span class="line">            <span class="keyword">if</span>(datum.equals(e))&#123;</span><br><span class="line">                <span class="keyword">return</span> <span class="keyword">true</span>;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">false</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">indexOf</span><span class="params">(E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; size; i++) &#123;</span><br><span class="line">            <span class="keyword">if</span>(data[i].equals(e))&#123;</span><br><span class="line">                <span class="keyword">return</span> i;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> -<span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">get</span><span class="params">(<span class="keyword">int</span> index)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt;= size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> data[index];</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">set</span><span class="params">(<span class="keyword">int</span> index, E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt;= size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        data[index] = e;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">add</span><span class="params">(<span class="keyword">int</span> index, E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt; size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span>(size == data.length)&#123;</span><br><span class="line">            grow(<span class="number">2</span>*data.length);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">//从最后一个位置到index所在位置元素，依次向后移动一个位置</span></span><br><span class="line">        <span class="keyword">for</span>(<span class="keyword">int</span> i=size-<span class="number">1</span>;i&gt;=index;i--)&#123;</span><br><span class="line">            data[i+<span class="number">1</span>] = data[i];</span><br><span class="line">        &#125;</span><br><span class="line">        data[index] = e;</span><br><span class="line">        size ++ ;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">remove</span><span class="params">(<span class="keyword">int</span> index)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt; size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        E e = data[index];</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = index; i &lt; size-<span class="number">1</span>; i++) &#123;</span><br><span class="line">            data[i] = data[i+<span class="number">1</span>];</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span>(size &lt; data.length / <span class="number">2</span>)&#123;</span><br><span class="line">            grow(data.length / <span class="number">2</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        size -- ;</span><br><span class="line">        data[size] = <span class="keyword">null</span>;</span><br><span class="line">        <span class="keyword">return</span> e;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 创建一个新的数组，将原来数组中的值替换成当前的</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> newCapacity 新的长度</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">grow</span><span class="params">(<span class="keyword">int</span> newCapacity)</span> </span>&#123;</span><br><span class="line">        E []newdata = (E[])<span class="keyword">new</span> Object[newCapacity];</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; size; i++) &#123;</span><br><span class="line">            newdata[i] = data[i];</span><br><span class="line">        &#125;</span><br><span class="line">        data = newdata;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="2-3-链表"><a href="#2-3-链表" class="headerlink" title="2.3 链表"></a><em>2.3 链表</em></h3><p>链表是一种物理上地址非连续、非顺序的存储结构，其中数据元素的顺序是<code>通过链表中的指针连接顺序实现的</code>，java中没有指针的概念，我们就用对象本身代替。</p>
<blockquote>
<p>链表每一个元素是由两部分组成：</p>
<p>① 存储元素对应数据的数据域</p>
<p>② 存储下一个元素的位置的指针</p>
</blockquote>
<p>其中链表由多种实现方式，比如：单向链表、双向链表、单向循环链表、双向循环链表等，大家可以参考下面的例子，自己实现其他的链表试试看，有点儿难度的哦。</p>
<p>此处用最简单的单向链表，进行java演示</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">LinkedList</span>&lt;<span class="title">E</span>&gt; <span class="keyword">implements</span> <span class="title">List</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="class"><span class="keyword">class</span> <span class="title">Node</span></span>&#123;</span><br><span class="line">        <span class="keyword">private</span> E data;        <span class="comment">//元素数据域</span></span><br><span class="line">        <span class="keyword">private</span> Node next;     <span class="comment">//下一个节点</span></span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="title">Node</span><span class="params">(E data,Node next)</span></span>&#123;</span><br><span class="line">            <span class="keyword">this</span>.data = data;</span><br><span class="line">            <span class="keyword">this</span>.next = next;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="title">Node</span><span class="params">(E data)</span></span>&#123;</span><br><span class="line">            <span class="keyword">this</span>(data,<span class="keyword">null</span>);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> Node head;</span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> size;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">LinkedList</span><span class="params">()</span></span>&#123;</span><br><span class="line">        head = <span class="keyword">null</span>;</span><br><span class="line">        size = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">getSize</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">isEmpty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size == <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">contains</span><span class="params">(E e)</span> </span>&#123;</span><br><span class="line">        Node p = head;</span><br><span class="line">        <span class="keyword">while</span> (p != <span class="keyword">null</span>)&#123;</span><br><span class="line">            <span class="keyword">if</span>(p.data.equals(e))&#123;</span><br><span class="line">                <span class="keyword">return</span> <span class="keyword">true</span>;</span><br><span class="line">            &#125;</span><br><span class="line">            <span class="comment">//相当于数组+1，因为链表中不存在+1的概念，只能指向下一个</span></span><br><span class="line">            p = p.next;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">false</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">indexOf</span><span class="params">(E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">int</span> result = -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">int</span> i = <span class="number">0</span>;</span><br><span class="line">        Node p = head;</span><br><span class="line">        <span class="keyword">while</span> (p != <span class="keyword">null</span>)&#123;</span><br><span class="line">            <span class="keyword">if</span>(p.data.equals(e))&#123;</span><br><span class="line">                result = i;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            &#125;</span><br><span class="line">            p = p.next;</span><br><span class="line">            i ++ ;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">get</span><span class="params">(<span class="keyword">int</span> index)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt;= size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        Node p = head;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; index; i++) &#123;</span><br><span class="line">            p=p.next;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> p.data;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">set</span><span class="params">(<span class="keyword">int</span> index, E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt;= size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        Node p = head;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; index; i++) &#123;</span><br><span class="line">            p= p.next;</span><br><span class="line">        &#125;</span><br><span class="line">        p.data = e;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">add</span><span class="params">(<span class="keyword">int</span> index, E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt; size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span>( index == <span class="number">0</span> )&#123;</span><br><span class="line">            addFirst(e);</span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span>(index == size) &#123;</span><br><span class="line">            addLast(e);</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            Node prev = head;</span><br><span class="line">            <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; index; i++) &#123;</span><br><span class="line">                prev = prev.next;</span><br><span class="line">            &#125;</span><br><span class="line">            Node node = <span class="keyword">new</span> Node(e,prev.next);</span><br><span class="line">            prev.next = node;</span><br><span class="line">            size ++;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">remove</span><span class="params">(<span class="keyword">int</span> index)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(index &lt; <span class="number">0</span> || index &gt;= size)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"数组下标越界"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span>( index == <span class="number">0</span> )&#123;</span><br><span class="line">            <span class="keyword">return</span> removeFirst();</span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span>(index == size -<span class="number">1</span>) &#123;</span><br><span class="line">            <span class="keyword">return</span> removeLast();</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            Node node = head;</span><br><span class="line">            <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; index-<span class="number">1</span>; i++) &#123;</span><br><span class="line">                node = node.next;</span><br><span class="line">            &#125;</span><br><span class="line">            Node ret = node.next;</span><br><span class="line">            node.next = ret.next;</span><br><span class="line">            ret.next = <span class="keyword">null</span>;</span><br><span class="line">            size -- ;</span><br><span class="line">            <span class="keyword">return</span> ret.data;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">private</span> E <span class="title">removeLast</span><span class="params">()</span></span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="keyword">null</span>)&#123;</span><br><span class="line">            <span class="keyword">return</span> <span class="keyword">null</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        E ret;</span><br><span class="line">        <span class="keyword">if</span>(head.next == <span class="keyword">null</span>)&#123;</span><br><span class="line">            ret = head.data;</span><br><span class="line">            head = <span class="keyword">null</span>;</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            Node node = head;</span><br><span class="line">            <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; size-<span class="number">1</span>; i++) &#123;</span><br><span class="line">                node = node.next;</span><br><span class="line">            &#125;</span><br><span class="line">            ret = node.next.data;</span><br><span class="line">            node.next = <span class="keyword">null</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        size--;</span><br><span class="line">        <span class="keyword">return</span> ret;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">private</span> E <span class="title">removeFirst</span><span class="params">()</span></span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="keyword">null</span>)&#123;</span><br><span class="line">            <span class="keyword">return</span> <span class="keyword">null</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        size --;</span><br><span class="line">        head = head.next;</span><br><span class="line">        <span class="keyword">return</span> head.data;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">addFirst</span><span class="params">(E e)</span></span>&#123;</span><br><span class="line">        Node node = <span class="keyword">new</span> Node(e,head);</span><br><span class="line">        head = node;</span><br><span class="line">        size++;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">addLast</span><span class="params">(E e)</span></span>&#123;</span><br><span class="line">        Node node = <span class="keyword">new</span> Node(e);</span><br><span class="line">        <span class="keyword">if</span>(head == <span class="keyword">null</span>)&#123;</span><br><span class="line">            head = node;</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            Node prev = head;</span><br><span class="line">            <span class="keyword">while</span>(prev.next != <span class="keyword">null</span>)&#123;</span><br><span class="line">                prev = prev.next;</span><br><span class="line">            &#125;</span><br><span class="line">            prev.next = node;</span><br><span class="line">        &#125;</span><br><span class="line">        size ++ ;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="2-4-栈"><a href="#2-4-栈" class="headerlink" title="2.4 栈"></a><em>2.4 栈</em></h3><p>什么是栈（stack）又名堆栈，这个是<code>数据结构</code>的栈，不是java创建对象的堆和栈的那个调用栈。简单的说就是，<code>java中创建的对象的栈，全称叫调用栈，简称栈。</code><br/></p>
<ul>
<li>栈是一种线性表的特殊展示形式<br>—— 栈是按照“后进先出”的原则处理数据。比较像一个没有盖子的油桶，先放进去的东西，最后才能拿出来</li>
<li>栈的基本操作只有两个<br>—— 入栈（Push）：将数据保存到栈顶，也叫压栈。进行该操作前，先修改栈顶的指针，使其向上移一个元素位置，然后将数据保存到栈顶指针所指的位置。<br>—— 出栈（Pop）：将栈顶的数据弹出，然后修改栈顶指针，使其指向栈中的下一个元素，也叫弹栈。<br><img src="%0A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%0Ar3QPO+wwuuaaa6ihoSGG9L11CbLyxgut/SEAWfnDOfFRgpbVr371K7r11lvz%0AdeDlnlhOWmt65pln6C9/+Uv++9/5znforLP4tUPJ3iCrZNc/rL2HrMJamZjl%0AFbSsTj/9dOJLgHvssQfdfffdlE6n84RZWMceeyytXbuW9t57b5o/n1/MWt3t%0ApZdeovPPP5+++93v0oknnljdg9fgaJBVDaDikAMmAFkNGCEOUAmBoGVVzJEv%0ABxqGsUXK119/Pd13331UX19Pzz//PAlRnV+Ljz/+mO644w568sknadOmTfT9%0A738fsqpksKANCPRCoDq/lUALAmUIhEFWLA8+c3Ich95++2366KOPqLu7O//F%0AZ1i8LVmyZCuZ9be4vHI5i2r27Nl09tln50WFM6v+0sR+SScAWSV9BPjU/6Bl%0ApZSic845J3+GwxufXe266675s6n169fThx9+uIWsbNum+++/n775zW/SL37x%0AC3rjjTfoc5/7HP3bv/0b7bvvvhVR41iNjY35tqeccgpkVRE1NAKB3glAVhgZ%0AvhAIUlYdHR10zDHH0CeffEJDhw6liy66iF9ZQttvv32+7zfddFP+PlbpmRVP%0Ab+d2LS0tNHPmzPyZ19y5c2ndunX0m9/8xvOlQsjKl2GGIDEmAFnFuLhh6lqQ%0AsuKzKp7px9usWbNo6tSpW6D59re/vXlGYPEyIMvqggsuoHvuuYcOOOCAfPtM%0AJkPTp0+n3//+9zR8+HBPeCErT7jQGAS2IgBZYVD4QiBIWfGkCb4EyBv/yXLi%0Aje9VzZkzZ/NZVc8zq6uuuooef/zxzXx4csaECRPykzH4jcc87b2vbeLEibTb%0Abrtt/jFk5cswQ5AYE4CsYlzcMHUtSFlt3LiRvv71r+fvS/FMvwMPPDB/OfDl%0Al1/OX9bj6eyrVq3K4yo9s/r5z39Ov/vd77bA2Nramj/b2m677fJ/9rXxRIox%0AY8ZAVmEahMgl0gQgq0iXLzrJBykrpsTPOl166aX05ptvboa2884702mnnZY/%0AA+JLfl5k1dzc7Ak+zqw84UJjENiKAGSFQeELgaBlxZ3ky3gsK37odc8996Rh%0Aw4b12Xe+Z7WtMyvIypdhgyAgsJkAZIXB4AuBMMjKS0chq8mMa61SaoQXbmgL%0AArUiAFnViiyOuwWBqMkqyeXDcktJrn54+w5Zhbc2scoMsopOOSGr6NQqSZlC%0AVkmqdoB9hawChO8xNGTlERia+0IAsvIFM4JAVtEZA5BVdGqVpEwhqyRVO8C+%0AQlYBwvcYGrLyCAzNfSEAWfmCGUEgq+iMAcgqOrVKUqaQVZKqHWBfIasA4XsM%0ADVl5BIbmvhCArHzBjCCQVXTGAGQVnVolKVPIKknVDrCvpmmOF0JkeAFYKWWA%0AmSB0JQT4xZFE1KGUGlxJe7QBgVoTgKxqTRjHzxMoygo4IkXAVUqlIpUxko0t%0AAcgqtqUNV8eKshoyZAhNmTIlXMkhm60IzJs3j7/3sVJqJ+ABgTAQgKzCUIUE%0A5IB7VtEpMu5ZRadWScoUskpStQPsK2QVIHyPoSErj8DQ3BcCkJUvmBEEsorO%0AGICsolOrJGUKWSWp2gH2FbIKEL7H0JCVR2Bo7gsByMoXzAgCWUVnDEBW0alV%0AkjKFrJJU7QD7ClkFCN9jaMjKIzA094UAZOULZgSBrKIzBiCr6NQqSZlCVkmq%0AdoB9hawChO8xNGTlERia+0IAsvIFM4JAVtEZA5BVdGqVpEwhqyRVO8C+QlYB%0AwvcYGrLyCAzNfSEAWfmCGUEgq+iMAcgqOrVKUqaQVZKqHWBfIasA4XsMDVl5%0ABIbmvhCArHzBjCCQVXTGAGQVnVolKVPIKknVDrCvkFWA8D2Ghqw8AkNzXwhA%0AVr5gRhDIKjpjALKKTq2SlClklaRqB9hXyCpA+B5DQ1YegaG5LwQgK18wIwhk%0AFZ0xAFlFp1ZJyhSySlK1A+wrZBUgfI+hISuPwNDcFwKQlS+YEQSyis4YgKyi%0AU6skZQpZJanaAfYVsgoQvsfQkJVHYGjuCwHIyhfMCAJZRWcMQFbRqVWSMoWs%0AklTtAPsKWQUI32NoyMojMDT3hQBk5QtmBIGsojMGIKvo1CpJmUJWSap2gH2N%0Ao6yUUtTW1karV6+mkSNH0iGHHEKmaQZIuTqhIavqcMRRqksAsqouTxytDwJx%0AklVXVxddffXVtGDBgq16e/zxx9OFF15I9fX1kR0LkFVkSxfrxCGrWJc3PJ2L%0Ak6xuuOEGuvfee/uEe+qpp9J5550XHvgeM4GsPAJDc18IQFa+YEaQuMhq3bp1%0ANGXKFHJdt8+iGoZBCxcupOHDh0ey8JBVJMsW+6Qhq9iXOBwdjIusFi1aRLNm%0AzSoL9brrrqMjjjiibLswNoCswlgV5ARZYQz4QiAusnrkkUfosssuK8uM2xx7%0A7LFl24WxAWQVxqogJ8gKY8AXAnGR1fLly2natGllmd133300ZsyYsu3C2ACy%0ACmNVkBNkhTHgC4G4yCqbzdLUqVNp5cqVfXIbPXo0PfDAA1RXV+cL22oHgayq%0ATRTHqwYByKoaFHGMsgTiIivuKJ9dzZgxgzo7O7fqd0NDA91+++3U3NxclklY%0AG0BWYa1MsvOCrJJdf996HydZMbRVq1bRFVdcQY7jUC6Xy59FSSlp9uzZNGrU%0AKN+41iIQZFULqjjmQAlAVgMliP0rIhA3WRU7zQ8Ir127lkaMGEHpdLoiFmFv%0ABFmFvULJzA+ySmbdfe91XGXlO0gfAkJWPkBGCM8EICvPyLBDfwhAVv2hFsw+%0AkFUw3BF12wQgK4wQXwhAVr5grkoQyKoqGHGQKhOArKoMFIfrnQBkFZ2RAVlF%0Ap1ZJyhSySlK1A+wrZBUgfI+hISuPwNDcFwKQlS+YEQSyis4YgKyiU6skZQpZ%0AJanaAfYVsgoQvsfQkJVHYGjuCwHIyhfMCAJZRWcMQFbRqVWSMoWsklTtAPsK%0AWQUI32NoyMojMDT3hQBk5QtmBIGsojMGIKvo1CpJmUJWSap2gH2FrAKE7zE0%0AZOURGJr7QgCy8gUzgkBW0RkDkFV0apWkTCGrJFU7wL5CVgHC9xgasvIIDM19%0AIQBZ+YIZQSCr6IwByCo6tUpSppBVkqodYF8hqwDhewwNWXkEhua+EICsfMGM%0AIJBVdMYAZBWdWiUpU8gqSdUOsK+QVYDwPYaGrDwCQ3NfCEBWvmBGEMgqOmMA%0AsopOrZKUKWSVpGoH2FfIKkD4HkNDVh6BobkvBCArXzAjCGQVnTEAWUWnVknK%0AFLJKUrUD7CtkFSB8j6EhK4/A0NwXApCVL5gRJI6yUkpRW1sbrV69mkaOHEmH%0AHHIImaYZ+WJDVpEvYSw7AFnFsqzh61ScZNXV1UVXX301LViwYCvQxx9/PF14%0A4YVUX18fviJUmBFkVSEoNPOVAGTlK+7kBouTrG644Qa69957+yzmqaeeSued%0Ad15kiw1ZRbZ0sU4csop1ecPTubjIat26dTRlyhRyXbdPuIZh0MKFC2n48OHh%0AKYCHTCArD7DQ1DcCkJVvqJMdKC6yWrRoEc2aNatsMa+77jo64ogjyrYLYwPI%0AKoxVQU6QFcaALwTiIqtHHnmELrvssrLMuM2xxx5btl0YG0BWYawKcoKsMAZ8%0AIRAXWS1fvpymTZtWltl9991HY8aMKdsujA0gqzBWBTlBVhgDvhCIi6yy2SxN%0AnTqVVq5c2Se30aNH0wMPPEB1dXW+sK12EMiq2kRxvGoQgKyqQRHHKEsgLrLi%0AjvLZ1YwZM6izs3Orfjc0NNDtt99Ozc3NZZmEtQFkFdbKJDsvyCrZ9fet93GS%0AFUNbtWoVXXHFFeQ4DuVyufxZlJSSZs+eTaNGjfKNay0CQVa1oIpjDpQAZDVQ%0Agti/IgJxk1Wx0/yA8Nq1a2nEiBGUTqcrYhH2RpBV2CuUzPwgq2TW3fdex1VW%0AvoP0ISBk5QNkhPBMALLyjAw79IcAZNUfasHsA1kFwx1Rt00AssII8YUAZOUL%0A5qoEgayqghEHqTIByKrKQHG43glAVtEZGZBVdGqVpEwhqyRVO8C+QlYBwvcY%0AGrLyCAzNfSEAWfmCGUEgq+iMAcgqOrVKUqaQVZKqHWBfIasA4XsMDVl5BIbm%0AvhCArHzBjCCQVXTGAGQVnVolKVPIKknVDrCvkFWA8D2Ghqw8AkNzXwhAVr5g%0ARhDIKjpjALKKTq2SlClklaRqB9hXyCpA+B5DQ1YegaG5LwQgK18wIwhkFZ0x%0AAFlFp1ZJyhSySlK1A+wrZBUgfI+hISuPwNDcFwKQlS+YEQSyis4YgKyiU6sk%0AZQpZJanaAfYVsgoQvsfQkJVHYGjuCwHIyhfMCAJZRWcMQFbRqVWSMoWsklTt%0AAPsKWQUI32NoyMojMDT3hQBk5QtmBIGsojMGIKvo1CpJmUJWSap2gH2FrAKE%0A7zE0ZOURGJr7QgCy8gUzgkBW0RkDkFV0apWkTCGrJFU7wL5CVgHC9xgasvII%0ADM19IQBZ+YIZQeIoK6UUtbW10erVq2nkyJF0yCGHkGmakS82ZBX5EsayA5BV%0ALMsavk7FSVZdXV109dVX04IFC7YCffzxx9OFF15I9fX14StChRlBVhWCQjNf%0ACUBWvuJObrA4yeqGG26ge++9t89innrqqXTeeedFttiQVWRLF+vEIatYlzc8%0AnYuLrNatW0dTpkwh13X7hGsYBi1cuJCGDx8engJ4yASy8gALTX0jAFn5hjrZ%0AgeIiq0WLFtGsWbPKFvO6666jI444omy7MDaArMJYFeQEWWEM+EIgLrJ65JFH%0A6LLLLivLjNsce+yxZduFsQFkFcaqICfICmPAFwJxkdXy5ctp2rRpZZndd999%0ANGbMmLLtwtgAsgpjVZATZIUx4AuBuMgqm83S1KlTaeXKlX1yGz16ND3wwANU%0AV1fnC9tqB4Gsqk0Ux6sGAciqGhRxjLIE4iIr7iifXc2YMYM6Ozu36ndDQwPd%0Afvvt1NzcXJZJWBtAVmGtTLLzgqySXX/feh8nWTG0VatW0RVXXEGO41Aul8uf%0ARUkpafbs2TRq1CjfuNYiEGRVC6o45kAJQFYDJYj9KyIQN1kVO80PCK9du5ZG%0AjBhB6XS6IhZhbwRZhb1CycwPskpm3X3vdVxl5TtIHwJCVj5ARgjPBCArz8iw%0AQ38IQFb9oRbMPpBVMNwRddsEICuMEF8IQFa+YK5KEMiqKhhxkCoTgKyqDBSH%0A650AZBWdkQFZRadWScoUskpStQPsK2QVIHyPoSErj8DQ3BcCkJUvmBEEsorO%0AGICsolOrJGUKWSWp2gH2FbIKEL7H0JCVR2Bo7gsByMoXzAgCWUVnDEBW0alV%0AkjKFrJJU7QD7ClkFCN9jaMjKIzA094UAZOULZgSBrKIzBiCr6NQqSZlCVkmq%0AdoB9hawChO8xNGTlERia+0IAsvIFM4JAVtEZA5BVdGqVpEwhqyRVO8C+QlYB%0AwvcYGrLyCAzNfSEAWfmCGUEgq+iMAcgqOrVKUqaQVZKqHWBfIasA4XsMDVl5%0ABIbmvhCArHzBjCCQVXTGAGQVnVolKVPIKknVDrCvkFWA8D2Ghqw8AkNzXwhA%0AVr5gRhDIKjpjALKKTq2SlClklaRqB9hXyCpA+B5DQ1YegaG5LwQgK18wIwhk%0AFZ0xAFlFp1ZJyhSySlK1A+yraZrjhRCZXXbZhaSUAWaC0JUQeOKJJ7hZh1Jq%0AcCXt0QYEak0Asqo1YRw/T6AoK+CIFAFXKZWKVMZINrYEIKvYljZcHSvKasiQ%0AITRlypRwJYdstiIwb948/t7HSqmdgAcEwkAAsgpDFRKQA+5ZRafIuGcVnVol%0AKVPIKknVDrCvkFWA8D2Ghqw8AkNzXwhAVr5gRhDIKjpjALKKTq2SlClklaRq%0AB9hXyCpA+B5DQ1YegaG5LwQgK18wIwhkFZ0xAFlFp1ZJyhSySlK1A+xrVGTF%0A/1E/9thj9NZbb9HGjRtp+PDhtPfee9PkyZMpnU4HSNC/0JCVf6wRqXICkFXl%0ArNByAASiIKuHHnqIrrzySsrlclv1dM8996Rrr72W+M+4b5BV3Csczf5BVtGs%0AW+SyDrusbNumM888M8919913p6OOOoqGDh1KL7zwAj3//POUzWbzK2/cdttt%0AkWPvNWHIyisxtPeDAGTlB2XEoLDL6vrrr6cFCxaQ1pr4gdjddtttc9UuvfRS%0AWrhwYf7fTz31FO200z+ek+WzsLfffjv/PX7gOQ4bZBWHKsavD5BV/Goayh6F%0AXVZFaK7rkmEYWzB89tln6fzzz89/784776Rx48bl/37PPffQrbfeSoMHD6YP%0AP/yQvvCFL9Dll19OO+ywQyhrUGlSkFWlpNDOTwKQlZ+0ExwrCrLq6uqiRx99%0AlJ555hlavXo1vffee9TZ2Und3d3EEuNtzpw5dNBBB9GiRYvokksuoblz51Jz%0AczOtXLky/2+ejPGTn/wk0pWGrCJdvtgmD1nFtrTh6ljYZfXBBx/Q9OnT87MA%0Aixvfs+KzJr5fxZf6SmXF97fGjh1L55xzzub2PEHjhhtuyMsuyhtkFeXqxTd3%0AyCq+tQ1Vz8Iuq7PPPpva2tpICEEXXXQRHXrooflp67w999xzdO65524hK57K%0APnv2bJo0adJmzu3t7Xl5cfuelxJDVYwyyUBWUapWcnKFrJJT60B7GmZZ8WW+%0Aww8/nPgyIMuHp6iXbjfffDPdddddW8iqN5h8v2rdunX0y1/+MlDWAw0OWQ2U%0AIPavBQHIqhZUccytCIRZVh0dHXlZ8X0pPqNiORU3nv3HZ1p8KZC34j2r0g7y%0ADMI77riD7r777vyki7322ivSIwCyinT5Yps8ZBXb0oarY2GWFZPiy3f8PBVv%0A/JzVmDFj6PXXX6cVK1bQHnvsQatWrepVVuvXr6eLL744//Of/exntN9++4UL%0AfD+ygaz6AQ271JwAZFVzxAjABMIuK556zrP5Fi9evLlgPLmCHw6eOXMmHXPM%0AMVvJ6pVXXqEf/vCH+ansvC+3j8MGWcWhivHrA2QVv5qGskdhl1UR2po1a/LT%0A1ocNG0ajRo3qc6IEzxr8l3/5Fzr11FNpxowZoWTe36Qgq/6Sw361JABZ1ZIu%0Ajr2ZQFRkVWnJeHYg3+u66qqrttpl5513zs8qjOoGWUW1cvHOO7q/UfGuS+x6%0AFydZ8USMz3/+8/kHhnvbnn76aWpqaopsDSGryJYu1olDVrEub3g6FydZhYdq%0AbTKBrGrDFUcdGAHIamD8sHeFBCCrCkGFoBlkFYIiIIWtCEBWGBS+EICsfMFc%0AlSCQVVUw4iBVJgBZVRkoDtc7AcgqOiMDsopOrZKUKWSVpGoH2FfIKkD4HkND%0AVh6BobkvBCArXzAjCGQVnTEAWUWnVknKFLJKUrUD7CtkFSB8j6EhK4/A0NwX%0AApCVL5gRBLKKzhiArKJTqyRlClklqdoB9tU0zfFCiMwuu+xCUsoAM0HoSgg8%0A8cQT3KxDKRWPBQ8r6TTahJoAZBXq8sQnuaKs4tOjRPTEVUqlEtFTdDL0BCCr%0A0JcoHgkWZTVkyBCafsW8TAAADGZJREFUMmVKPDoV417MmzePe/exUmqnGHcT%0AXYsQAcgqQsWKcqq4ZxWd6uGeVXRqlaRMIaskVTvAvkJWAcL3GBqy8ggMzX0h%0AAFn5ghlBIKvojAHIKjq1SlKmkFWSqh1gXyGrAOF7DA1ZeQSG5r4QgKx8wYwg%0AkFV0xgBkFZ1aJSlTyCpJ1Q6wr1GRFf9H/dhjjxG/tn7jxo00fPhw2nvvvWny%0A5MmUTqcDJOhfaMjKP9aIVDkByIqImpub6xsbG0/WWnc4jvNgT3xSyi8T0S7Z%0AbHbRsmXLVkspLaWUXTnmfEvR2tp6lOu6B2Sz2YeXLVv2hsf9I908CrJ66KGH%0A6Morr6RcLrcV6z333JOuvfZa4j/jvkFWca9wNPsHWRHR2LFjd0qn0x9qrdc5%0AjvPZXmT1IhFNcF33+FQqdazWeroQYrZt21d5KbuU8h4imkZE9yqlTvWyb9Tb%0Ahl1Wtm3TmWeemce8++6701FHHUVDhw6lF154gZ5//nnKZrP5lTduu+22qJei%0AbP6QVVlEaBAAAcjKo6yI6D3DMP5ARI1EdIZS6s7Sukkpv01EF/ZRS166ZhQR%0AuUT0Wl/1FkJ83bbtVwIYDzULGXZZXX/99bRgwQLSWhM/ELvbbrttZnHppZfS%0AwoUL8/9+6qmnaKed4v2cLGRVs18DHHgABCArj7LKZDIPSyn5kuEs13WnLV26%0AdAvpWJY1S2v98wHUhFzXNTOZTGYgx6jFvoXLpZ1a698IIX7T0NDwv4sXL+6o%0AJFbYZVXsg+u6ZBjGFl169tln6fzzz89/784776Rx48Zt/jlfMrziiiuI2zz5%0A5JOVoAh9G8gq9CVKZIKJlpVpmlcIIU4WQhha672IiG9WvFlYZqa1OCKklPnL%0AgFrri4lojRBifyIao7VucBznS6UjpygrIcTDRPRv5UaV67rbCyF2F0LwGdcL%0ARLR+/fr1b6xYsaKz3L5+/7ylpaXFMAynR9xXWFxCiEfa29uZU69bFGTV1dVF%0Ajz76KD3zzDO0evVqeu+996izs5O6u7v5A0S+X3PmzKGDDjoo//c//elP+X/z%0ARIyOjg7Iyu8BiXiJIpBoWVmWdTvff+ql4h+5rnt6KpX6suu6+wshDilc9uvZ%0A1G1qatpu0aJFm4o/KJHVPbZtnzZhwoTdXdfdgy//ua5blNLu/G+tNf975+K+%0AWus5juOcHdYR2IestkhXa82SfoSIHnUcZ00Jl1211mt41fXHH388dF384IMP%0AaPr06flZgMWN71kNHjw4f7/q7bff3kpWM2bMoBNPPJEaGhryZ1c4swpdWZFQ%0AjAgkWlbNzc3bDxo0qNF13ROFEHOI6H0hxJhUKqW7u7svEUKc26PWS4noz1rr%0AV1OpFJ9RvLJkyZLVRKT7kpVlWa8Xztr6GjYfEdGrfEwi+us+++zz8/nz5289%0AHa2wd0tLyyQhxKW1HINa68v7OP4+hmF4mWGwRmu9WAjRRkQriejBsMrq7LPP%0Apra2NhJC0EUXXUSHHnpofto6b8899xyde+7fh0LpmdWmTZuosbGRnn76aciq%0AlgMSxwYBnk4NCsSzvP5IREcWWHxLKXW/lJLPpvhyH090+AkRHUVEZymlbi1h%0AZrS0tDRlMpmPK5DVXUIIFtL7hUuIP+T79Uqpo73UgGVlGMbTXvYJU9vtttsu%0Af99n9OjRoUmLL/MdfvjhxJcBJ02alJ+iXrrdfPPNdNddd20lq2IbyCo0pUQi%0AMSaQeFmNHz/+c6lUiiVS3DbmcjmrdOKElPK/iOh0rfXd/AJBnpNBRHyXvZmI%0AHldKnVDcWUr5IyK6Wghxh23bM4pnVrlc7sClS5e+zO1aWlomGIbB93f+qpTi%0AY1S8sawqbuyxYQVnbHx/bfO9PA+H5xs+fAb5mZ133jl0l8v4fhPLiu9L8RkV%0Ay6m48ew/PtPiS4G8lZ5ZQVYeRgCagsAACSReVqZp3i+EYNnwVPSPtNZdQoh3%0AhBA8/WuK1pqlNIGIduiFNf8P9phS6tgSWV1NRD/SWl/pOM6PSy4Dcgy+FMYb%0AH+tZItpIRIeVHjeVSn20ZMmSf9w4GWCBq7l7JfesSuNprZ8UQjzKXzxxJMz3%0ArM4555z881S88XNWY8aModdff51WrFhBe+yxB61atQqyquZgwrFAwCOBRMvK%0A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%0ANQDM1ICOEgAAAABJRU5ErkJggg==" alt="出栈入栈图"></li>
</ul>
<blockquote>
<p>栈主要有以下五种操作：</p>
<p>① 判断栈的状态</p>
<p>② 返回栈中元素数量</p>
<p>③ 入栈操作</p>
<p>④ 出栈操作</p>
<p>⑤ 获取栈顶元素，此处只查看，不出栈</p>
</blockquote>
<p>使用java定义栈的接口</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">Stack</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//判断栈是否为空</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//返回栈中元素数量</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//压栈</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">push</span><span class="params">(E item)</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//弹栈</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">pop</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//查看栈顶元素（不弹栈）</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peek</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h4 id="2-4-1-数组实现栈"><a href="#2-4-1-数组实现栈" class="headerlink" title="2.4.1 数组实现栈"></a><em>2.4.1 数组实现栈</em></h4><p>使用数组定义栈时，我们要多去注意数组的下标越界、扩容、锁容问题，尤其是在出栈、入栈、获得栈顶元素时记得添加判断</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">import</span> me.vico.stack.Stack;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"><span class="keyword">import</span> java.util.EmptyStackException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ArrayStack</span>&lt;<span class="title">E</span>&gt; <span class="keyword">implements</span> <span class="title">Stack</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 默认初始化栈的长度</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">final</span> <span class="keyword">static</span> <span class="keyword">int</span> DEFAULT_CAPACITY = <span class="number">10</span> ;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 用数组存放栈的元素</span></span><br><span class="line">    <span class="keyword">private</span> E[] data;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 栈中元素的数量</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> size;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 指向栈顶的索引（主要用于记录现在的栈顶是哪一个元素）</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> top;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 初始化栈的数组</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">ArrayStack</span><span class="params">(<span class="keyword">int</span> capacity)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">this</span>.data = (E[]) <span class="keyword">new</span> Object[capacity];</span><br><span class="line">        <span class="keyword">this</span>.size = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">this</span>.top = -<span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 初始化栈的数组</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">ArrayStack</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">this</span>(DEFAULT_CAPACITY);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size == <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">push</span><span class="params">(E item)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> (data.length == size) &#123;</span><br><span class="line">            grow(data.length*<span class="number">2</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        data[++top] = item;</span><br><span class="line">        size++;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">pop</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(size == <span class="number">0</span>)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> EmptyStackException();</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span>(size &lt; data.length/<span class="number">2</span>)&#123;</span><br><span class="line">            grow(data.length/<span class="number">2</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        size--;</span><br><span class="line">        <span class="keyword">return</span> data[top--];</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peek</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(size == <span class="number">0</span>)&#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> EmptyStackException();</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> data[top];</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">grow</span><span class="params">(<span class="keyword">int</span> newCapacity)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> ( newCapacity &lt;= DEFAULT_CAPACITY )&#123;</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        Arrays.copyOf(data,newCapacity);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h4 id="2-4-2-链表实现栈"><a href="#2-4-2-链表实现栈" class="headerlink" title="2.4.2 链表实现栈"></a><em>2.4.2 链表实现栈</em></h4><p>是不是发现使用数组实现栈很简单，那么我们现在使用链表实现一个栈看看。和数组一样,多注意下标的问题，在写的时候可以多看看栈的原理，这样这个链表方式的栈就比较容易写出来了</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.EmptyStackException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">LinkedStack</span>&lt;<span class="title">E</span>&gt; <span class="keyword">implements</span> <span class="title">Stack</span>&lt;<span class="title">E</span>&gt;</span>&#123;</span><br><span class="line">    <span class="comment">// 因为是链表，所以创建一个可以自旋的节点</span></span><br><span class="line">    <span class="keyword">private</span> <span class="class"><span class="keyword">class</span> <span class="title">Node</span>&lt;<span class="title">E</span>&gt;</span>&#123;</span><br><span class="line">        <span class="comment">// 当前节点存储的数据</span></span><br><span class="line">        <span class="keyword">public</span> E data;</span><br><span class="line">        <span class="comment">// 指向一下一个节点的数据</span></span><br><span class="line">        <span class="keyword">public</span> Node&lt;E&gt; next;</span><br><span class="line">        <span class="comment">// 创建一个节点，必须要给出当前节点的值和下一个节点的值</span></span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="title">Node</span><span class="params">(E val,Node&lt;E&gt; next)</span> </span>&#123;</span><br><span class="line">            <span class="keyword">this</span>.data = val;</span><br><span class="line">            <span class="keyword">this</span>.next = next;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="comment">// 最上层的节点</span></span><br><span class="line">    <span class="keyword">private</span> Node&lt;E&gt; top;</span><br><span class="line">    <span class="comment">// 这个就是长度</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> size;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 创建整个链表</span></span><br><span class="line"><span class="comment">     *  1、将栈顶元素创建成空</span></span><br><span class="line"><span class="comment">     *  2、将栈的数量初始为0,</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">LinkedStack</span><span class="params">()</span></span>&#123;</span><br><span class="line">        <span class="keyword">this</span>.top = <span class="keyword">null</span>;</span><br><span class="line">        <span class="keyword">this</span>.size = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size == <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 入栈【压栈】</span></span><br><span class="line"><span class="comment">     * 放一个元素到栈中，此时分两步将元素放入栈中</span></span><br><span class="line"><span class="comment">     * 1、将栈顶的元素指向新的元素【假如是这个栈第一次放入元素也没关系，因为后面一个指向会是原来的栈顶，也就是null】</span></span><br><span class="line"><span class="comment">     * 2、将整个栈的长度+1</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> item </span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">push</span><span class="params">(E item)</span> </span>&#123;</span><br><span class="line">        top = <span class="keyword">new</span> Node(item,top);</span><br><span class="line">        size++;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 出栈【弹栈】</span></span><br><span class="line"><span class="comment">     * 将栈顶元素弹出，那么分两步</span></span><br><span class="line"><span class="comment">     * 1、将栈顶元素移动到next的位置</span></span><br><span class="line"><span class="comment">     * 2、长度-1</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span></span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">pop</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> ( size == <span class="number">0</span> ) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> EmptyStackException();</span><br><span class="line">        &#125;</span><br><span class="line">        E result = top.data;</span><br><span class="line">        top = top.next;</span><br><span class="line">        <span class="keyword">this</span>.size--;</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 查看栈顶元素</span></span><br><span class="line"><span class="comment">     * 这个就比较简单了吧，直接将栈顶元素返回就可以，因为是弹栈所以不需要将栈顶元素-1</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span></span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peek</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> ( size == <span class="number">0</span> ) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> EmptyStackException();</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> top.data;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="2-5-队列"><a href="#2-5-队列" class="headerlink" title="2.5 队列"></a><em>2.5 队列</em></h3><p>队列（queue）一般也叫堆（heap），它是按照“先进先出”的原则处理数据。有点儿像羽毛球筒，先放进去的球，先拿出来</p>
<ul>
<li>队列是一种线性表的特殊展示形式<br>—— 队列只允许咋表的前端进行删除操作，而在表的后端进行插入<br>—— 进行插入操作的端叫做队尾<br>—— 进行删除操作的端叫做队头</li>
<li>队列的基本操作<br>—— 出队（dequeue）：将队头的元素拿出，指针向后移动一位，长度-1<br>—— 入队（enqueue）：在队尾处插入新的元素，长度+1<br><img src="%0A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%0Ar3QPO+wwuuaaa6ihoSGG9L11CbLyxgut/SEAWfnDOfFRgpbVr371K7r11lvz%0AdeDlnlhOWmt65pln6C9/+Uv++9/5znforLP4tUPJ3iCrZNc/rL2HrMJamZjl%0AFbSsTj/9dOJLgHvssQfdfffdlE6n84RZWMceeyytXbuW9t57b5o/n1/MWt3t%0ApZdeovPPP5+++93v0oknnljdg9fgaJBVDaDikAMmAFkNGCEOUAmBoGVVzJEv%0ABxqGsUXK119/Pd13331UX19Pzz//PAlRnV+Ljz/+mO644w568sknadOmTfT9%0A738fsqpksKANCPRCoDq/lUALAmUIhEFWLA8+c3Ich95++2366KOPqLu7O//F%0AZ1i8LVmyZCuZ9be4vHI5i2r27Nl09tln50WFM6v+0sR+SScAWSV9BPjU/6Bl%0ApZSic845J3+GwxufXe266675s6n169fThx9+uIWsbNum+++/n775zW/SL37x%0AC3rjjTfoc5/7HP3bv/0b7bvvvhVR41iNjY35tqeccgpkVRE1NAKB3glAVhgZ%0AvhAIUlYdHR10zDHH0CeffEJDhw6liy66iF9ZQttvv32+7zfddFP+PlbpmRVP%0Ab+d2LS0tNHPmzPyZ19y5c2ndunX0m9/8xvOlQsjKl2GGIDEmAFnFuLhh6lqQ%0AsuKzKp7px9usWbNo6tSpW6D59re/vXlGYPEyIMvqggsuoHvuuYcOOOCAfPtM%0AJkPTp0+n3//+9zR8+HBPeCErT7jQGAS2IgBZYVD4QiBIWfGkCb4EyBv/yXLi%0Aje9VzZkzZ/NZVc8zq6uuuooef/zxzXx4csaECRPykzH4jcc87b2vbeLEibTb%0Abrtt/jFk5cswQ5AYE4CsYlzcMHUtSFlt3LiRvv71r+fvS/FMvwMPPDB/OfDl%0Al1/OX9bj6eyrVq3K4yo9s/r5z39Ov/vd77bA2Nramj/b2m677fJ/9rXxRIox%0AY8ZAVmEahMgl0gQgq0iXLzrJBykrpsTPOl166aX05ptvboa2884702mnnZY/%0AA+JLfl5k1dzc7Ak+zqw84UJjENiKAGSFQeELgaBlxZ3ky3gsK37odc8996Rh%0Aw4b12Xe+Z7WtMyvIypdhgyAgsJkAZIXB4AuBMMjKS0chq8mMa61SaoQXbmgL%0AArUiAFnViiyOuwWBqMkqyeXDcktJrn54+w5Zhbc2scoMsopOOSGr6NQqSZlC%0A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%0ARLR+/fr1b6xYsaKz3L5+/7ylpaXFMAynR9xXWFxCiEfa29uZU69bFGTV1dVF%0Ajz76KD3zzDO0evVqeu+996izs5O6u7v5A0S+X3PmzKGDDjoo//c//elP+X/z%0ARIyOjg7Iyu8BiXiJIpBoWVmWdTvff+ql4h+5rnt6KpX6suu6+wshDilc9uvZ%0A1G1qatpu0aJFm4o/KJHVPbZtnzZhwoTdXdfdgy//ua5blNLu/G+tNf975+K+%0AWus5juOcHdYR2IestkhXa82SfoSIHnUcZ00Jl1211mt41fXHH388dF384IMP%0AaPr06flZgMWN71kNHjw4f7/q7bff3kpWM2bMoBNPPJEaGhryZ1c4swpdWZFQ%0AjAgkWlbNzc3bDxo0qNF13ROFEHOI6H0hxJhUKqW7u7svEUKc26PWS4noz1rr%0AV1OpFJ9RvLJkyZLVRKT7kpVlWa8Xztr6GjYfEdGrfEwi+us+++zz8/nz5289%0AHa2wd0tLyyQhxKW1HINa68v7OP4+hmF4mWGwRmu9WAjRRkQriejBsMrq7LPP%0Apra2NhJC0EUXXUSHHnpofto6b8899xyde+7fh0LpmdWmTZuosbGRnn76aciq%0AlgMSxwYBnk4NCsSzvP5IREcWWHxLKXW/lJLPpvhyH090+AkRHUVEZymlbi1h%0AZrS0tDRlMpmPK5DVXUIIFtL7hUuIP+T79Uqpo73UgGVlGMbTXvYJU9vtttsu%0Af99n9OjRoUmLL/MdfvjhxJcBJ02alJ+iXrrdfPPNdNddd20lq2IbyCo0pUQi%0AMSaQeFmNHz/+c6lUiiVS3DbmcjmrdOKElPK/iOh0rfXd/AJBnpNBRHyXvZmI%0AHldKnVDcWUr5IyK6Wghxh23bM4pnVrlc7sClS5e+zO1aWlomGIbB93f+qpTi%0AY1S8sawqbuyxYQVnbHx/bfO9PA+H5xs+fAb5mZ133jl0l8v4fhPLiu9L8RkV%0Ay6m48ew/PtPiS4G8lZ5ZQVYeRgCagsAACSReVqZp3i+EYNnwVPSPtNZdQoh3%0AhBA8/WuK1pqlNIGIduiFNf8P9phS6tgSWV1NRD/SWl/pOM6PSy4Dcgy+FMYb%0AH+tZItpIRIeVHjeVSn20ZMmSf9w4GWCBq7l7JfesSuNprZ8UQjzKXzxxJMz3%0ArM4555z881S88XNWY8aModdff51WrFhBe+yxB61atQqyquZgwrFAwCOBRMvK%0A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%0ANQDM1ICOEgAAAABJRU5ErkJggg==" alt="出栈入栈图"></li>
</ul>
<p>使用java定义队列的接口</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">Queue</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 返回队列元素的数量</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列是否为空</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 入队</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">enqueue</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 出队</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">dequeue</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 查看队首元素</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peek</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h4 id="2-5-1-数组实现队列"><a href="#2-5-1-数组实现队列" class="headerlink" title="2.5.1 数组实现队列"></a><em>2.5.1 数组实现队列</em></h4><p>大家觉得简单吗，这个可以自己回去试试看，然后再看下面的代码。</p>
<blockquote>
<p>友情提示：在使用数组的时候要多注意以下两点</p>
<p>① 下标的问题，入队或者出队时，整个队列中可能还没有元素，所以要进行判断</p>
<p>② 在队列长度超过数组长度或队列长度比数组长度过短时，数组的扩容和缩容的问题</p>
</blockquote>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ArrayQueue</span>&lt;<span class="title">E</span>&gt; <span class="keyword">implements</span> <span class="title">Queue</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 默认初始化大小</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> DEFAULT_CACPCITY = <span class="number">10</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 长度</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> size;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 数组元素</span></span><br><span class="line">    <span class="keyword">private</span> E[] data;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队头</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> head;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队尾</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> tail;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">ArrayQueue</span> <span class="params">(<span class="keyword">int</span> cacpcity)</span></span>&#123;</span><br><span class="line">        <span class="keyword">this</span>.data = (E[]) <span class="keyword">new</span> Object[cacpcity];</span><br><span class="line">        <span class="keyword">this</span>.head = -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">this</span>.tail = -<span class="number">1</span>;</span><br><span class="line">        <span class="keyword">this</span>.size = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">ArrayQueue</span><span class="params">()</span></span>&#123;</span><br><span class="line">        <span class="keyword">this</span>(DEFAULT_CACPCITY);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> size == <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 入队</span></span><br><span class="line"><span class="comment">     * 1、入队时，队尾向后移动一位，注意如果队尾超过了数组的长度，那么使用取模操作，将队尾调回至数组起始位</span></span><br><span class="line"><span class="comment">     * 2、然后将此时的队头设置成入队元素</span></span><br><span class="line"><span class="comment">     * 3、因为初始队列头的值是-1，所以在放入第一个元素的时候，队头和队尾应该是一样的，所以进行赋值</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> e</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">enqueue</span><span class="params">(E e)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>( data.length == size )&#123;</span><br><span class="line">            grow( data.length * <span class="number">2</span> );</span><br><span class="line">        &#125;</span><br><span class="line">        tail = ( tail + <span class="number">1</span> ) % data.length;</span><br><span class="line">        data[tail] = e;</span><br><span class="line">        <span class="keyword">if</span>(size == <span class="number">0</span>) &#123;</span><br><span class="line">            head = tail;</span><br><span class="line">        &#125;</span><br><span class="line">        size++;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">grow</span><span class="params">(<span class="keyword">int</span> cacpcity)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(cacpcity &lt;= DEFAULT_CACPCITY)&#123;</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">// 将旧的数组存放起来</span></span><br><span class="line">        E[] oldData = data;</span><br><span class="line">        <span class="comment">// 创建新的数组</span></span><br><span class="line">        data = (E[])<span class="keyword">new</span> Object[cacpcity];</span><br><span class="line">        <span class="comment">// 循环新数组,将旧数组中的数组存入新数组</span></span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; size; i++) &#123;</span><br><span class="line">            <span class="comment">// 此处是一个小知识点【敲黑板、划重点了】</span></span><br><span class="line">            <span class="comment">/*</span></span><br><span class="line"><span class="comment">                （ head + i ） : 因为在队列中，head才是起点，而i只是新数组的起点和数据向后移动标识，所以使用head+i来做队列开头</span></span><br><span class="line"><span class="comment">                 % oldData.length : 因为head在循环的时候会超过数组的长度，所以%之后获得数组中第一个元素</span></span><br><span class="line"><span class="comment">                 注意这里有个小知识点，因为此处是将数组中所有的元素都添加至新数组中，可能会出现oldData长度是10，但是队列元素只有9的情况，</span></span><br><span class="line"><span class="comment">             */</span></span><br><span class="line">            data[i] = oldData[(head+i)%oldData.length];</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">// 完成新数组之后</span></span><br><span class="line">        <span class="comment">// 这时队头就变成新数组初始的位置，也就是0</span></span><br><span class="line">        head = <span class="number">0</span>;</span><br><span class="line">        <span class="comment">// 这时队尾在新数组中就变成队列长度-1的位置</span></span><br><span class="line">        tail = size-<span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 出队</span></span><br><span class="line"><span class="comment">     * 1、获得当前队列头的元素</span></span><br><span class="line"><span class="comment">     * 2、长度缩减1</span></span><br><span class="line"><span class="comment">     * 3、队头的指针向后移动1【需要考虑队头指针的下标比数组的长度还大，所以取模】</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span></span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">dequeue</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> (size == <span class="number">0</span>) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(<span class="string">"队列为空。。。"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        E result = data[head];</span><br><span class="line">        size--;</span><br><span class="line">        head = (head + <span class="number">1</span>) % data.length;</span><br><span class="line">        <span class="comment">// 考虑缩容</span></span><br><span class="line">        <span class="keyword">if</span> (size &lt; data.length/<span class="number">2</span> ) &#123;</span><br><span class="line">            grow(data.length / <span class="number">2</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peek</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> (size == <span class="number">0</span>) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(<span class="string">"队列为空。。。"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        E result = data[head];</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h4 id="2-5-2-链表实现队列"><a href="#2-5-2-链表实现队列" class="headerlink" title="2.5.2 链表实现队列"></a><em>2.5.2 链表实现队列</em></h4><p>使用集合实现，其实和链表实现栈的思路是差不多的，所以这个就比较简单，大家有时间的可以自己先实现看看，然后再看这段代码。代码里面有不足的地方请多多指出。<br/></p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">LinkedQueue</span>&lt;<span class="title">E</span>&gt; <span class="keyword">implements</span> <span class="title">Queue</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="class"><span class="keyword">class</span> <span class="title">Node</span>&lt;<span class="title">E</span>&gt;</span>&#123;</span><br><span class="line">        <span class="keyword">private</span> E data;</span><br><span class="line">        <span class="keyword">private</span> Node&lt;E&gt; next;</span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="title">Node</span><span class="params">(E val,Node&lt;E&gt; next)</span></span>&#123;</span><br><span class="line">            <span class="keyword">this</span>.data = val;</span><br><span class="line">            <span class="keyword">this</span>.next = next;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队头元素</span></span><br><span class="line">    <span class="keyword">private</span> Node&lt;E&gt; head;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队尾元素</span></span><br><span class="line">    <span class="keyword">private</span> Node&lt;E&gt; tail;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列的长度</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">int</span> size;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 创建队列的默认方法</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">LinkedQueue</span><span class="params">()</span></span>&#123;</span><br><span class="line">        <span class="keyword">this</span>.head = <span class="keyword">null</span>;</span><br><span class="line">        <span class="keyword">this</span>.tail = <span class="keyword">null</span>;</span><br><span class="line">        <span class="keyword">this</span>.size = <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">this</span>.size;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">this</span>.size == <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">enqueue</span><span class="params">(E e)</span> </span>&#123;</span><br><span class="line">        Node&lt;E&gt; prev = tail;</span><br><span class="line">        tail = <span class="keyword">new</span> Node&lt;E&gt;(e,<span class="keyword">null</span>);</span><br><span class="line">        <span class="comment">// 如果队列是空的话，那么队头和队尾是一样的，可以理解为第一次添加元素到队列中</span></span><br><span class="line">        <span class="keyword">if</span>( size == <span class="number">0</span> )&#123;</span><br><span class="line">            head = tail;</span><br><span class="line">        <span class="comment">// 队列不是空的话，将队尾元素的next指向新创建的队列元素</span></span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            prev.next = tail;</span><br><span class="line">        &#125;</span><br><span class="line">        size ++;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">dequeue</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> ( <span class="keyword">this</span>.size == <span class="number">0</span> ) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(<span class="string">"这是一个空队列。。。"</span>);</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        E result = head.data;</span><br><span class="line">        head = head.next;</span><br><span class="line">        size-- ;</span><br><span class="line">        <span class="comment">// 判断刚才记录的是不是队列中最后一个元素，因为是最后元素所以将队尾设置为null</span></span><br><span class="line">        <span class="keyword">if</span> ( size == <span class="number">0</span> ) &#123;</span><br><span class="line">            tail = <span class="keyword">null</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> result;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peek</span><span class="params">()</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span> ( <span class="keyword">this</span>.size == <span class="number">0</span> ) &#123;</span><br><span class="line">            <span class="keyword">throw</span> <span class="keyword">new</span> RuntimeException(<span class="string">"这是一个空队列。。。"</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> head.data;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="2-6-双端队列"><a href="#2-6-双端队列" class="headerlink" title="2.6 双端队列"></a><em>2.6 双端队列</em></h3><blockquote>
<p>双端队列是一种具有队列和栈性质的抽象数据类型<br>— 双端队列中的元素可以从两端弹出<br>— 插入和删除操作限定在队列的两边进行</p>
</blockquote>
<p>也就是说双端队列，两边都是队头同样也是队尾</br><br>实际中在java中的<code>java.util.LinkedList</code>和<code>java.util.ArrayDeque</code>都是采用这样的双端链表结构实现的</br><br>使用java定义双端队列接口</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">    </span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">DoubleEndedQueue</span>&lt;<span class="title">E</span>&gt; </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 获得队列元素的数量</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">int</span> <span class="title">size</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列是否为空</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">empty</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列头入队</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addFirst</span><span class="params">(E e)</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列尾入队</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addLast</span><span class="params">(E e)</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列头出队</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">removeFrist</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 队列尾出队</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">removeLast</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 查看队首元素</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peekFirst</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 查看队尾元素</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> E <span class="title">peekLast</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>


<h3 id="2-6-串"><a href="#2-6-串" class="headerlink" title="2.6 串"></a><em>2.6 串</em></h3><h2 id="3-非线性结构"><a href="#3-非线性结构" class="headerlink" title="3.非线性结构"></a><em>3.非线性结构</em></h2><h3 id="3-1-树"><a href="#3-1-树" class="headerlink" title="3.1 树"></a><em>3.1 树</em></h3><h3 id="3-2-多维数组"><a href="#3-2-多维数组" class="headerlink" title="3.2 多维数组"></a><em>3.2 多维数组</em></h3><h3 id="3-3-图"><a href="#3-3-图" class="headerlink" title="3.3 图"></a><em>3.3 图</em></h3><p>参考<br><a href="https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E8%A1%A8" target="_blank" rel="noopener">百度链接：线性表</a></p>

        </div>

        
            <section class="post-copyright">
                
                    <p class="copyright-item">
                        <span>作者：</span>
                        <span>Vico</span>
                    </p>
                
                
                    <p class="copyright-item">
                        <span>链接：</span>
                        <span><a href="https://vico-cuiym.github.io/2020/04/12/JAVA%E5%B8%B8%E8%A7%81%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">https://vico-cuiym.github.io/2020/04/12/JAVA%E5%B8%B8%E8%A7%81%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/</a></span>
                    </p>
                
                
                    <p class="copyright-item">
                        <span>执照：</span>
                        <span>Copyright (c) 2019 <a href="http://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC-BY-NC-4.0</a> LICENSE</span>
                    </p>
                
                
                     <p class="copyright-item">
                         <span>脚注：</span>
                         <span>你相信 <strong>命运</strong> 吗?</span>
                     </p>
                

            </section>
        
        <section class="post-tags">
            <div>
                <span>标签:</span>
                <span class="tag">
                    
                    
                        <a href="/tags/java/"># java</a>
                    
                        <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/"># 数据结构</a>
                    
                        
                </span>
            </div>
            <div>
                <a href="javascript:window.history.back();">上一页</a>
                <span>· </span>
                <a href="/">首页</a>
            </div>
        </section>
        <section class="post-nav">
            
            
            <a class="next" rel="next" href="/2020/04/08/Untitled/">Untitled</a>
            
        </section>


    </article>
</div>

        </div>
        <footer id="footer" class="footer">
    <div class="copyright">
        <span>© Vico的个人博客 | 博客风格技术支持 <a href="https://hexo.io" target="_blank">Hexo</a> & <a href="https://github.com/Siricee/hexo-theme-Chic" target="_blank">Chic</a></span>
    </div>
</footer>

    </div>
</body>
</html>
